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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

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

所用到的模塊和庫(kù) : ?python3+reqeuests+Airtest+fiddler

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

?

1.首先環(huán)境的配置 Fiddler 和Airtest

  fiddler可以設(shè)定抓取包的鏈接,并自動(dòng)保存到設(shè)定的txt文件中

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

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

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

? ? ??

?

  接著來(lái)下面操作,設(shè)置抓包規(guī)則并自動(dòng)保存? ? ? ?由于截圖不好截,就手機(jī)拍了= =圖片不好勿打

  

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

? ?

?

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

//保存到本地添加開始//這是抖音的地址 設(shè)定視頻包的鏈接名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");//文件保存路徑,可自定義 自動(dòng)保存的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();} //保存到本地添加結(jié)束

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

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

  !!!這些地址是有有效期的。。目測(cè)是大概1-2小時(shí)吧?

  

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

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

  Airtest是支持python代碼操作的, 需要對(duì)應(yīng)的庫(kù)? :pocoui? ? ? ??pip?install?pocoui

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

  以下是我寫的自動(dòng)上滑,拉動(dòng)視頻的代碼--如果不適用,建議在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) #模擬滑動(dòng) def douyin_spwipe():#無(wú)限循環(huán)向上滑動(dòng)while True:#坐標(biāo),以及速度poco.swipe([0.5,0.8],[0.5,0.3],duration=0.2)sleep(3)

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

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

  ?? 下面是python獲取鏈接,和寫入mp4的代碼。。。如有不合適,請(qǐng)自行修改調(diào)試代碼

   ? 獲取和生成兩個(gè)方法可以 同時(shí)進(jìn)行, 多線程,多個(gè)文件,多個(gè)進(jìn)程隨意? ?生成視頻后清空txt文件,休眠十幾分鐘讓滑動(dòng)程序,繼續(xù)截圖視頻包鏈接

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去掉頭尾默認(rèn)空格或換行符# 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()#統(tǒng)計(jì)文件夾中視頻數(shù)量DIR = r'E:\url_bt\douyin_mp4' # 要統(tǒng)計(jì)的文件夾num = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])+1print(num)#文件夾現(xiàn)文件數(shù)量for url in data_url:# stream=True作用是推遲下載響應(yīng)體直到訪問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 用于整數(shù)輸出 %s用于字符串輸出# 實(shí)現(xiàn)下載進(jìn)度條顯示,這一步需要得到總視頻大小total_size = int(res.headers['Content-Length'])print('這是視頻的總大小:',total_size)#設(shè)置流的起始值為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)

  

  如果有優(yōu)化,以及更好的方案可以隨時(shí)聯(lián)系我,? ?以上均為原創(chuàng)所寫,轉(zhuǎn)載請(qǐng)標(biāo)明出處!

轉(zhuǎn)載于:https://www.cnblogs.com/HugJun/p/11125745.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。