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

歡迎訪問 生活随笔!

生活随笔

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

python

python3 爬虫实战:mitmproxy 对接 python 下载抖音小视频

發布時間:2024/7/23 python 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 爬虫实战:mitmproxy 对接 python 下载抖音小视频 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

From:https://blog.csdn.net/Fan_shui/article/details/81461253

?

?

一、前言

?

前面我們已經用 appium 爬取了微信朋友圈,今天我們學習下 mitmproxy,mitmproxy 是干什么的呢,它跟 charles 和 fiddler類似,是一個抓包工具,以控制臺的形式顯示,mitmproxy 的重要性在于它可以對接 python,可以通過 python 處理抓包的數據。試想一下我們如果不用 mitmproxy,用 fiddler 抓取抖音的視頻地址,我們可以抓到視頻的地址,這些地址要是可以直接用requests 緩存下來就好了,mitmproxy 就派上用場了。

知乎:python3爬蟲(三):mitmproxy下載抖音小視頻:https://zhuanlan.zhihu.com/p/41492085
GitHub:https://github.com/FanShuixing/git_webspider

?

?

二、學習目標

?

可以根據抖音號和抖音名稱爬取到對應的抖音小視頻

?

?

三、學習資料(感謝分享)

?

崔大的mitmproxy安裝教程:https://cuiqingcai.com/5391.html
抖音教程:https://blog.csdn.net/mp624183768/article/details/80956368
fiddler的使用:https://blog.csdn.net/c406495762/article/details/76850843

?

?

四、mitmproxy的安裝

?

請先按照崔大的mitmproxy的安裝 進行安裝和證書的配置,如果安卓證書安裝有問題,可以參看下面(華為手機,應該普遍適用):
把文件復制到手機qq后,可以在文件管理的下載中查看qq文件

第一個是我們下載的證書,長按后勾上它

點擊下面的菜單,查看詳情,這樣可以看見這個證書的具體位置,一會有用

電腦打開360WiFi后,手機連接上360WiFi,在WiFi里面的菜單

?

安裝證書就需要找到證書的位置,這樣剛才我們在文件管理里面看到的位置就可以在這兒用到,找到證書安裝即可。

配置代理
證書安裝完成后,要配置手機和電腦處在同一個局域網內,我建議用360wifi,其它wifi應該也可以,但是最好不要用自己家路由器的wifi,我家wifi測試的時候沒成功,360WiFi才成功了的。?

如果弄完之后,在cmd中輸入mitmdump,在手機中打開瀏覽器看看有沒有網絡,看看電腦的控制臺有沒有輸出抓取信息,如果有,恭喜你安裝成功。如果沒有,憋著急,看看我的辦法能不能幫助你:

建議:弄完后我發現手機瀏覽器中打不開網頁,qq和微信是有網絡的,我重新安裝了一下mitmproxy,不過不是用pip安裝,而是直接下載的?安裝文件:https://github.com/mitmproxy/mitmproxy/releases, 選擇個exe就行?

安裝好后,查看安裝路徑下的bin文件夾,里面有個mitmdump.exe,雙擊它打開代理服務,這個時候再在手機上刷新網頁發現mitmdump有請求輸出。

?

?

五、用fiddler分析接口

?

不知道大家用 fiddler不,我抓包更喜歡用它,方便簡潔,mitmdump 的唯一優勢是可以對接 python,但是我感覺它不好分析呀,所以我是把 fiddler開著,分析下接口,再用mitmdump對接python,fiddler我就不介紹了。
網上教程很多,可以參看:https://blog.csdn.net/c406495762/article/details/76850843(博主大大寫的超棒)

我們在手機中打開上圖中的頁面后,在fiddler中會發現,有一個這樣的網址被抓取到

它的json數據中有視頻信息

打開aweme_list中的一個{},里面是一個視頻的信息,有對視頻的描述,也有用戶的id,也有video的url

url_list里面的url就是視頻的url,隨便選一個就是了。

?

?

六、對接python

?

# douyin_t.py import jsondef response(flow):url = 'https://api.amemv.com/aweme/v1/aweme/post/'# 篩選出以上面url為開頭的url if flow.request.url.startswith(url):text = flow.response.text# 將已編碼的json字符串解碼為python對象 data = json.loads(text)print(data)

我把代碼保存在了D:\my-python-run\web spider目錄下,所以我得先到這個目錄下,這樣mitmdump才能找到我的python腳本,然后運行命令 mitmdump -s douyin_t.py

在手機上打開抖音,搜索到你想下載的用戶的抖音主頁

可以發現mitmdump有數據輸出

接下來我們只需提取視頻的url,并緩存視頻到本地

# douyin_t.py import json, osdef response(flow):url = 'https://api.amemv.com/aweme/v1/aweme/post/'# 篩選出以上面url為開頭的urlif flow.request.url.startswith(url):text = flow.response.text# 將已編碼的json字符串解碼為python對象data = json.loads(text)# print(data)# 在fiddler中剛剛看到每一個視頻的所有信息 # 都在aweme_list中 video_url = data['aweme_list']path = 'E:/爬蟲數據/douyin'if not os.path.exists(path):os.mkdir(path)for each in video_url:# 視頻描述 desc = each['desc']url = each['video']['play_addr']['url_list'][0]print(desc, url)

運行如下:

現在只需要用requests把這些url緩存到本地,首先要導入requests庫

# douyin_t.py import json, os import requestsdef response(flow):url = 'https://api.amemv.com/aweme/v1/aweme/post/'# 篩選出以上面url為開頭的url if flow.request.url.startswith(url):text = flow.response.text# 將已編碼的json字符串解碼為python對象 data = json.loads(text)# print(data) # 在fiddler中剛剛看到每一個視頻的所有信息 # 都在aweme_list中 video_url = data['aweme_list']path = 'E:/爬蟲數據/douyin'if not os.path.exists(path):os.mkdir(path)for each in video_url:# 視頻描述 desc = each['desc']url = each['video']['play_addr']['url_list'][0]print(desc, url)

不幸的是,我只是導入了個requests庫,其他什么都沒有改程序便報錯了

No module named ‘requests’,簡直黑人問號臉,怎么會沒有requests呢,我天天都在用,怎么會報這個錯呢?
解決辦法:相信大家也都安裝了requests庫了的,如果你也報這種錯誤,我們就再來搗鼓下路徑問題,提示是沒有requests模塊,我非常確定我有這個模塊,那只能說明mitmdump在執行腳本的時候沒有找到requests模塊,那我們可以把我們的腳本douyi_t.py放在與requests一個文件下執行?

可以通過上述命令看到我的requests庫在D:\my-install\Anaconda\Lib\site-packages,我們把douyin_t.py放在這兒

現在就沒有再報錯了,接下來的事情就順利成章了

# douyin_t.py import json, os import requestsdef response(flow):url = 'https://api.amemv.com/aweme/v1/aweme/post/'# 篩選出以上面url為開頭的url if flow.request.url.startswith(url):text = flow.response.text# 將已編碼的json字符串解碼為python對象 data = json.loads(text)# print(data) # 在fiddler中剛剛看到每一個視頻的所有信息 # 都在aweme_list中 video_url = data['aweme_list']path = 'E:/爬蟲數據/douyin'if not os.path.exists(path):os.mkdir(path)for each in video_url:# 視頻描述 desc = each['desc']url = each['video']['play_addr']['url_list'][0]# print(desc,url) filename = path + '/' + desc + '.mp4'# print(filename) req = requests.get(url=url, verify=False)with open(filename, 'ab') as f:f.write(req.content)f.flush()print(filename, '下載完畢')

這個只要我們沒有關閉mitmdump運行窗口,我們可以搜索其他的抖音用戶的頁面,也會被下載下來,不知道大家是更喜歡appium自動化,還是喜歡自己用手滑,嘿嘿嘿嘿

若針對requests導入錯誤有更好的建議,歡迎分享(●ˇ?ˇ●)

?

?

?

總結

以上是生活随笔為你收集整理的python3 爬虫实战:mitmproxy 对接 python 下载抖音小视频的全部內容,希望文章能夠幫你解決所遇到的問題。

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