日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

dataframe保存为txt_竟然可以用 Python 抓取公号文章保存成 PDF

發布時間:2023/12/18 python 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dataframe保存为txt_竟然可以用 Python 抓取公号文章保存成 PDF 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

游戲的多維數據集的形狀概念

Python技術

人生苦短,我用 Python!

今天為大家介紹如何將自己喜歡的公眾號的歷史文章轉成 PDF 保存到本地。前幾天還有朋友再問,能不能幫把某某公眾號的文章下載下來,因為他很喜歡這個號的文章,但由于微信上查看歷史文章不能排序,一些較早期的文章翻很長時間才能找到,而且往往沒有一次看不了幾篇,下次還得再重頭翻,想想就很痛苦。

抓取的思路

目前我在網上找了找,看到實現的方式大概分為以下三種:

  • 通過手機和電腦相連,利用 Fiddler 抓包獲取請求和返回報文,然后通過報文模擬請求實現批量下載。
  • 通過搜狗瀏覽器或者用 wechatsogou 這個 Python 模塊,去搜索公號后,實現批量下載。
  • 通過公眾號平臺,這個需要你能登陸到公眾號平臺即可,剩下就比較簡單。
  • 整體來看最后一種方式是最簡單的,接下來將以第三種方式為例,為大家介紹如何達到批量下載的目的。

    獲取 Cookie

    首先我們登陸到公眾號平臺,登陸成功后會跳轉到公眾號管理首頁,如下圖:

    然后我們在當前頁面打開瀏覽器開發者工具,刷新下頁面,在網絡里就能看到各種請求,在這里我們點開一個請求 url,然后就能看到下圖網絡請求信息,里面包含請求的 Cookie 信息。

    接下來我們需要把 Cookie 信息復制下來轉換成 Json 格式串保存到文本文件里,以供后面請求鏈接時使用。這里需要寫一段 Python 代碼進行處理,新建文件 gen_cookies.py 寫入代碼如下:

    # gen_cookies.pyimport json# 從瀏覽器中復制出來的 Cookie 字符串cookie_str = "pgv_pvid=9551991123; pac_uid=89sdjfklas; XWINDEXGREY=0; pgv_pvi=89273492834; tvfe_boss_uuid=lkjslkdf090; RK=lksdf900; ptcz=kjalsjdflkjklsjfdkljslkfdjljsdfk; ua_id=ioje9899fsndfklsdf-DKiowiekfjhsd0Dw=; h_uid=lkdlsodifsdf; mm_lang=zh_CN; ts_uid=0938450938405; mobileUV=98394jsdfjsd8sdf; ……中間部分省略 EXIV96Zg=sNOaZlBxE37T1tqbsOL/qzHBtiHUNZSxr6TMqpb8Z9k="cookie = {}# 遍歷 cookie 信息for cookies in cookie_str.split("; "): cookie_item = cookies.split("=") cookie[cookie_item[0]] = cookie_item[1]# 將cookies寫入到本地文件with open('cookie.txt', "w") as file: # 寫入文件 file.write(json.dumps(cookie))

    好了,將 Cookie 寫入文件后,接下來就來說下在哪里可以找到某公號的文章鏈接。

    獲取文章鏈接

    在公號管理平臺首頁點擊左側素材管理菜單,進入素材管理頁面,然后點擊右側的新建圖文素材按鈕,如下圖:

    進入新建圖文素材頁面,然后點擊這里的超鏈接:

    在編輯超鏈接的彈出框里,點擊選擇其他公眾號的連接:

    在這里我們就能通過搜索,輸入關鍵字搜索我們想要找到公眾號,比如在這里我們搜索 "Python 技術",就能看到如下搜索結果:

    然后點擊第一個 Python 技術的公眾號,在這里我們就能看到這個公眾號歷史發布過的所有文章:

    我們看到這里文章每頁只顯示五篇,一共分了31頁,現在我們再打開自帶的開發者工具,然后在列表下面點下一頁的按鈕,在網絡中會看到向服務發送了一個請求,我們分析下這個請求的參數。

    通過請求參數,我們大概可以分析出參數的意義, begin 是從第幾篇文章開始,count是一次查出幾篇,fakeId 對應這個公號的唯一 Id,token 是通過 Cookie 信息來獲取的。好了,知道這些我們就可以用 Python 寫段代碼去遍歷請求,新建文件 gzh_download.py,代碼如下:

    # gzh_download.py# 引入模塊import requestsimport jsonimport reimport randomimport timeimport pdfkit# 打開 cookie.txtwith open("cookie.txt", "r") as file: cookie = file.read()cookies = json.loads(cookie)url = "https://mp.weixin.qq.com"#請求公號平臺response = requests.get(url, cookies=cookies)# 從url中獲取tokentoken = re.findall(r'token=(d+)', str(response.url))[0]# 設置請求訪問頭信息headers = { "Referer": "https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&token=" + token + "&lang=zh_CN", "Host": "mp.weixin.qq.com", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",}# 循環遍歷前10頁的文章for j in range(1, 10, 1): begin = (j-1)*5 # 請求當前頁獲取文章列表 requestUrl = "https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin="+str(begin)+"&count=5&fakeid=MzU1NDk2MzQyNg==&type=9&query=&token=" + token + "&lang=zh_CN&f=json&ajax=1" search_response = requests.get(requestUrl, cookies=cookies, headers=headers) # 獲取到返回列表 Json 信息 re_text = search_response.json() list = re_text.get("app_msg_list") # 遍歷當前頁的文章列表 for i in list: # 將文章鏈接轉換 pdf 下載到當前目錄 pdfkit.from_url(i["link"], i["title"] + ".pdf") # 過快請求可能會被微信問候,這里進行10秒等待 time.sleep(10)

    好了,就上面這點代碼就夠了,這里在將 URL 轉成 PDF 時使用的是 pdfkit 的模塊,使用這個需要先安裝 wkhtmltopdf 這個工具,官網地址在文末給出,支持多操作系統,自己下載安裝即可,這里就不再贅述。

    安裝完后,還需要再執行 pip3 install pdfkit 命令安裝這個模塊。安裝好了,現在來執行下 python gzh_download.py 命令啟動程序看下效果怎么樣。

    看來是成功了,這個工具還是很強大的。

    總結

    本文為大家介紹了如何通過分析公眾號平臺的功能,找到可以訪問到某個公眾號所有文章的鏈接,從而可以批量下載某公眾號所有文章,并轉為 PDF 格式保存到本地的目的。這里通過 Python 寫了少量代碼就實現文章的抓取和轉換的工作,如果有興趣你也可以試試。

    python學習資料獲取方式

    右上角點擊關注

    評論區任意評論或者轉發一下

    做完1、2步,私信回復“學習”

    私信不要多字,不要少字,不要錯字,私信方法:點擊我頭像,進入主頁面,右上角有私信功能,在關注的上方位置。

    總結

    以上是生活随笔為你收集整理的dataframe保存为txt_竟然可以用 Python 抓取公号文章保存成 PDF的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。