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

歡迎訪問 生活随笔!

生活随笔

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

python

python爬虫抖某音爬取视频 Airtest+fiddler

發布時間:2025/3/21 python 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫抖某音爬取视频 Airtest+fiddler 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所用到的模塊和庫 : ?python3+reqeuests+Airtest+fiddler

Airtest? : (app自動化軟,類似Appium,網易家的本人很喜歡)

?

1.首先環境的配置 Fiddler 和Airtest

  fiddler可以設定抓取包的鏈接,并自動保存到設定的txt文件中

  #在配置好手機證書,以及可以抓到手機包的情況下,再看下面步驟----配置fiddler環境:https://jingyan.baidu.com/article/1876c8524581d9890b1376a5.html

                               手機抓包證書教程:https://www.jianshu.com/p/724097741bdf

  弄好之后,打開抖音,可以看到一堆抖音的包的話,就說明可以了,

? ? ??

?

  接著來下面操作,設置抓包規則并自動保存? ? ? ?由于截圖不好截,就手機拍了= =圖片不好勿打

  

  打開后按ctrl+f 搜素? ? OnBeforeRequest? 找到這個方法

? ?

?

?  將下面代碼插入fiddler OnBeforeRequest??方法中

//保存到本地添加開始//這是抖音的地址 設定視頻包的鏈接名if (oSession.fullUrl.Contains("v1-dy.bytecdn.cn")||oSession.fullUrl.Contains("v3-dy-y.bytecdn.cn")||oSession.fullUrl.Contains("v3-dy.z.bytecdn.cn")||oSession.fullUrl.Contains("v5-dy.bytecdn.cn")||oSession.fullUrl.Contains("v6-dy.bytecdn.cn") ||oSession.fullUrl.Contains("v9-dy-z.bytecdn.cn") ||oSession.fullUrl.Contains("v9-dy.bytecdn.cn")){var fso;var file;fso = new ActiveXObject("Scripting.FileSystemObject");//文件保存路徑,可自定義 自動保存的txt文檔地址file = fso.OpenTextFile("E:\\url_bt\\douyin.txt",8,true);//file.writeLine("Request-url:" + oSession.url);file.writeLine("http://"+oSession.url)//file.writeLine("Request-host:" + oSession.host);//file.writeLine("Request-header:" + "\n" + oSession.oRequest.headers);//file.writeLine("Request-body:" + oSession.GetRequestBodyAsString());//file.writeLine("\n");file.close();} //保存到本地添加結束

  將上面的代碼插入后打開抖音刷一刷,然后去自動保存的地址查詢是否有相應的txt文檔,如果沒有,查看fiddler對應視頻包名是否有修改

  效果---這些鏈接可以在瀏覽器打開,但是可能看不到視頻,那是瀏覽器不支持,這個無影響,??

  !!!這些地址是有有效期的。。目測是大概1-2小時吧?

  

   那么問題來了。。如何自動模擬人的滑動來獲取到這些鏈接----華麗麗的Airtest登場(沒有接觸過手機自動化軟件的可以先去入門了,入門后再回來查看,有appium的童鞋可以接著看)

  Airetest 基本操作教程:https://segmentfault.com/a/1190000017982620?utm_source=tag-newest

  Airtest是支持python代碼操作的, 需要對應的庫? :pocoui? ? ? ??pip?install?pocoui

  安裝好之后,寫入自動滑動抖音的視頻來截取鏈接-----當然可以截取? 推薦,同城,搜索,榜單的一些視頻包,只需要打開相應的視頻界面滑動

  以下是我寫的自動上滑,拉動視頻的代碼--如果不適用,建議在Airtest上自己寫好copy到python代碼中就歐克

  

__author__ = "xiaojun"from airtest.core.api import *auto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPocopoco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False) #模擬滑動 def douyin_spwipe():#無限循環向上滑動while True:#坐標,以及速度poco.swipe([0.5,0.8],[0.5,0.3],duration=0.2)sleep(3)

    那么有了視頻的鏈接。。。剩下的就是寫一個python代碼獲取這些鏈接并請求寫入mp4視頻文件中了

    !!!注意視頻鏈接是有? 有效期的 大概1-2小時吧,所以建議是,一邊滑動獲取鏈接,一邊寫入生成鏈接

  ?? 下面是python獲取鏈接,和寫入mp4的代碼。。。如有不合適,請自行修改調試代碼

   ? 獲取和生成兩個方法可以 同時進行, 多線程,多個文件,多個進程隨意? ?生成視頻后清空txt文件,休眠十幾分鐘讓滑動程序,繼續截圖視頻包鏈接

import os import requests import sysimport time from fake_useragent import UserAgentheaders = {'User-Agent':UserAgent().chrome } #去重 def distinct_data():datalist_blank = []with open(r'E:\url_bt\douyin.txt','r') as f:#讀取所有行,生成列表f_data_list = f.readlines()print(f_data_list)for url in f_data_list:if len(url)>40:datalist_blank.append(url.strip()) #去掉\n strip去掉頭尾默認空格或換行符# print(url.strip()) f.close()# print(len(datalist_blank), datalist_blank)# print(len(set(datalist_blank)), set(datalist_blank))#去重后的列表urldatalist_blank= list(set(datalist_blank))return datalist_blank#寫入文件夾 def responsedouyin():#獲得種子鏈接data_url=distinct_data()#統計文件夾中視頻數量DIR = r'E:\url_bt\douyin_mp4' # 要統計的文件夾num = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])+1print(num)#文件夾現文件數量for url in data_url:# stream=True作用是推遲下載響應體直到訪問Response.content屬性# res = requests.get(url,stream=True,headers=headers)res = requests.get(url=url, stream=True, headers=headers) # #定義視頻存放的路徑pathinfo = r'E:\url_bt\douyin_mp4\%d.mp4'%num #%d 用于整數輸出 %s用于字符串輸出# 實現下載進度條顯示,這一步需要得到總視頻大小total_size = int(res.headers['Content-Length'])print('這是視頻的總大小:',total_size)#設置流的起始值為0temp_size = 0if res.status_code == 200:# 將視頻寫入文件夾with open(pathinfo, 'wb') as file:file.write(res.content)print(pathinfo + '下載完成啦啦啦啦啦')num += 1with open(r'E:\url_bt\douyin.txt', 'w') as f:f.write('')f.close()time.sleep(700)

  

  如果有優化,以及更好的方案可以隨時聯系我,? ?以上均為原創所寫,轉載請標明出處!

轉載于:https://www.cnblogs.com/HugJun/p/11125745.html

總結

以上是生活随笔為你收集整理的python爬虫抖某音爬取视频 Airtest+fiddler的全部內容,希望文章能夠幫你解決所遇到的問題。

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