今天逛csdn社區的時候看到了關於使用python來獲取微信公眾號內容的文章,自己也抽出時間寫了一個小例子,下面一起來看一下。
01目標公眾號
公眾號名稱:某某電影
02實現思路
首先,獲取微信公眾號文章的連結地址,在瀏覽器中打開,同時打開調試臺,可以看到代碼中加載了一個iframe,找到iframe的連結地址,並打開它,在此我們就明白了,微信公眾號的視頻播放是通過嵌套模式加載的,將新連結繼續在瀏覽器中打開,並打開調試臺,查看network中的xhr接口,可以看到連結數據請求,分別是獲取視頻封面和視頻信息的,都是get請求方式,接下來我們看一下獲取視頻信息的接口返回數據,如下圖:
接口中返回了一系列的數據,我們需要拿到數據中url地址參數和標題參數,url地址參數中有三個子集,分別為不同的視頻參數地址,我們拿取第一個集合的數據,獲取到視頻的播放地址。進而通過播放地址去下載視頻文件。
03示例代碼
1、開始代碼
if__name__=='__main__':print("微信公眾號文章內視頻下載~~~~~~~~") path=main() ifnotpath: path=main() # 解析連結 analysis(path)
這段代碼主要是描述產品及獲取微信公眾號文章連結,同時對連結參數進行判斷,如果沒有參數進行重複獲取,直至參數獲取成功。
2、文章地址獲取
# 文章地址獲取defmain():path_url=input("請輸入連結地址:") ifnotpath_url: print("請在下方輸入連結地址") path_url=input("地址:")returnpath_url
上面的代碼使用了python中的input,進行獲取地址參數。
3、使用擴展類
importrequestsimportjsonfrombs4importBeautifulSoupfromurllibimportparseimportos
主要是請求、代碼解析、連結參數解析、數據格式轉換、文件操作類庫
4、視頻地址解析
此處代碼較長,以圖片形式進行展示,如有需要可以在下方進行評論,獲取完整代碼。
上面的代碼中我們首先對連結做了判斷,判斷是否能夠進行打開,使用requests進行請求連結,如果狀態碼不是200,直接進行提示。
繼續通過連結地址,獲取頁面的代碼部分,然後通過抓取到iframe,並通過get方式獲取到「data-src」的連結參數。下面對連結中的參數進行獲取,主要獲取參數為vid,應該就是資料庫中存儲的視頻ID吧!(猜測的)
大家可能會問為什麼要獲取個vid,因為我們在視頻真實地址獲取中需要用到,最後我們得到一個如下參數值:
wxv_1155920308990312448
下面我們使用vid參數值進行拼接真實的播放地址,通過模擬請求頭參數等進行請求連結地址,對返回的參數做解析,最後得到視頻的真實地址。
5、視頻下載
註:此段代碼來源於網絡
通過視頻的真實播放地址,我們可以很輕鬆的將視頻進行下載,不管是通過代碼的方式還是通過其他工具的形式,為了減少操作,我們直接通過代碼的形式對連結的視頻文件進行下載操作,並將文件保存在目錄中,經過測試下載速度挺快的,下載完成的視頻能夠正常的播放。
JavaScript正則表達式「程式設計師培養之路第十二天」
JavaScript字符串「程式設計師培養之路第十一天」
JavaScript數組「程式設計師培養之路第十天」