python實(shí)現(xiàn)模擬器爬取抖音評(píng)論數(shù)據(jù)的示例代碼
由于之前和朋友聊到抖音評(píng)論的爬蟲(chóng),demo做出來(lái)之后一直沒(méi)整理,最近時(shí)間充裕后,在這里做個(gè)筆記。提示:大體思路 通過(guò)fiddle + app模擬器進(jìn)行抖音抓包,使用python進(jìn)行數(shù)據(jù)整理
安裝需要的工具:python3 下載fiddle 安裝及配置手機(jī)模擬器下載
抖音部分:模擬器下載好之后, 打開(kāi)模擬器在應(yīng)用市場(chǎng)下載抖音
對(duì)抖音進(jìn)行fiddle配置,配置成功后就可以當(dāng)手機(jī)一樣使用了
一、工具配置及抓包:我們隨便打開(kāi)一個(gè)視頻之后,fiddle就會(huì)刷新新的數(shù)據(jù)包
在json中找到視頻地址:
在fiddler中添加下載視頻代碼:注意兩點(diǎn):(1)get后面的路徑要隨時(shí)看進(jìn)行更換(2)下載的路徑要在fiddler下面自己新建
if (m_Hide304s && oSession.responseCode == 304) { oSession['ui-hide'] = 'true'; }if (oSession.uriContains('https://aweme.snssdk.com/aweme/v1/general/search/single/')){ var strBody=oSession.GetResponseBodyAsString(); var sps = oSession.PathAndQuery.slice(-58,); //FiddlerObject.alert(sps) var timestamp=new Date().getTime(); var filename = 'D:抖音評(píng)論資料' + '/' + sps + timestamp + '.json'; var curDate = new Date(); var sw : System.IO.StreamWriter; if (System.IO.File.Exists(filename)){ sw = System.IO.File.AppendText(filename); sw.Write(strBody); } else{ sw = System.IO.File.CreateText(filename); sw.Write(strBody); } sw.Close(); sw.Dispose();
此段代碼放到fiddler中的script的response中,如下圖:添加好之后別忘記保存!!
程序執(zhí)行代碼:
import osimport jsonimport timeimport requestsimport reimport csvclass Douyin(object): def __init__(self): pass self.url1 = ’https://aweme.snssdk.com/aweme/v2/comment/list/?aweme_id=6885929189950737676&cursor=0&count=20&address_book_access=1&gps_access=1&forward_page_type=1&channel_id=0&city=310000&hotsoon_filtered_count=0&hotsoon_has_more=0&follower_count=0&is_familiar=0&page_source=0&os_api=25&device_type=VOG-AL00&ssmix=a&manifest_version_code=110301&dpi=240&uuid=868594157367551&app_name=aweme&version_name=11.3.0&ts=1603350069&cpu_support64=false&app_type=normal&ac=wifi&host_abi=armeabi-v7a&channel=aweGW&update_version_code=11309900&_rticket=1603350070959&device_platform=android&iid=1758845207590062&version_code=110300&mac_address=b0%3Ac4%3A2d%3Ad0%3Aed%3A38&cdid=7974198e-c4c0-49c2-bfaa-43686052706e&openudid=d0c6cffa7067bedd&device_id=844047245117672&resolution=720*1280&device_brand=HUAWEI&language=zh&os_version=7.1.2&aid=1128&mcc_mnc=46000’ self.url2 = ’https://aweme.snssdk.com/aweme/v2/comment/list/?aweme_id=6885163969477086479&cursor=0&count=20’ self.header = { ’Accept-Encoding’: ’gzip’, ’X-SS-REQ-TICKET’: ’1603350070957’, ’sdk-version’: ’1’, ’Cookie’: ’install_id=1758845207590062; ttreq=1$34f012b99d70a66f681dc3d1f0b438fc1b161af3; d_ticket=77247c94236bf8055c233f8cabb6a5ddf3231; odin_tt=fccb20add45a15f08a2519eadcaaf22cba4b3f8f1fceec300a088407c2daf81ea76b260ef6c81dbc86dfedfea011f68c25238f9b3984fe4f5909441dfd1cc9c2; sid_guard=6de18a966e69dcbbf076f629a2ef6511%7C1603345424%7C5184000%7CMon%2C+21-Dec-2020+05%3A43%3A44+GMT; uid_tt=ba98af780b4e337f01463cf98a8afafd; sid_tt=6de18a966e69dcbbf076f629a2ef6511; sessionid=6de18a966e69dcbbf076f629a2ef6511’, ’x-tt-token’: ’006de18a966e69dcbbf076f629a2ef651189d3f6f73fd3d6319b543d50d2e2e5a4cf3e383f8da81f07e049bcf850de07d331’, ’X-Gorgon’: ’0404d8210000a6a3dca0dbc6b11483a82420c9a94dd050a3e511’, ’X-Khronos’: ’1603350070’, ’Host’: ’aweme.nssdk.com’, ’Connection’: ’Keep-Alive’, ’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36’, } self.add = ’D:抖音評(píng)論資料’ self.videos_list = os.listdir(’D:抖音評(píng)論資料’) def parse(self): ’鏈接,內(nèi)容,發(fā)布人昵稱,發(fā)布時(shí)間,點(diǎn)贊數(shù),評(píng)論數(shù),分享數(shù)’ lists = [] for vid in self.videos_list: a = open(’D:抖音評(píng)論資料{}’.format(vid),encoding=’utf-8’) content = json.load(a) for con in content[’data’]:meta = {}try: meta[’title’] = con[’aweme_info’][’desc’] meta[’author_name’] = con[’aweme_info’][’author’][’nickname’] meta[’u_name’] = con[’aweme_info’][’author’][’unique_id’] meta[’create_time’] = con[’aweme_info’][’create_time’] timeArray = time.localtime(meta[’create_time’]) meta[’create_time’] = time.strftime('%Y--%m--%d %H:%M:%S', timeArray) meta[’digg_count’] = con[’aweme_info’][’statistics’][’digg_count’] meta[’comment_count’] = con[’aweme_info’][’statistics’][’comment_count’] meta[’share_count’] = con[’aweme_info’][’statistics’][’share_count’] meta[’share_url’] = con[’aweme_info’][’share_url’]except: meta[’title’] = ’’ meta[’author_name’] = ’’ meta[’u_name’] = ’’ meta[’create_time’] = ’’ meta[’digg_count’] = ’’ meta[’comment_count’] = ’’ meta[’share_count’] = ’’ meta[’share_url’] = ’’if meta[’u_name’] == ’’: try: meta[’u_name’] = con[’aweme_info’][’music’][’owner_handle’] except: meta[’u_name’] = ’’if meta[’title’] == ’’: passelse: lists.append(meta) # print(meta) return lists def save_data(self, meta): header = [’share_url’, ’title’, ’author_name’, ’u_name’, ’create_time’, ’digg_count’, ’comment_count’, ’share_count’] print(meta) with open(’test.csv’, ’a’, newline=’’, encoding=’utf-8-sig’) as f: writer = csv.DictWriter(f, fieldnames=header) writer.writeheader() # 寫入列名 writer.writerows(meta) def run(self): meta = self.parse() self.save_data(meta)if __name__ == ’__main__’: douyin = Douyin() douyin.run()
運(yùn)行代碼后在代碼執(zhí)行目錄下會(huì)生成一個(gè)excel
ps:抖音不會(huì)一次性返回整個(gè)評(píng)論數(shù)據(jù)包,每次往下滑動(dòng)評(píng)論區(qū)會(huì)多出26條評(píng)論數(shù)據(jù),我們就可以利用模擬器進(jìn)行滑動(dòng)操作。
點(diǎn)擊 更多>鼠標(biāo)宏
點(diǎn)擊錄屏之后,用鼠標(biāo)往下滑動(dòng)一次頁(yè)面
點(diǎn)擊停止,就會(huì)將你剛才的操作保存下來(lái)
點(diǎn)擊設(shè)置 可以對(duì)剛才的操作進(jìn)行循環(huán)播放,從而達(dá)到自動(dòng)刷新評(píng)論區(qū)。
到此這篇關(guān)于python實(shí)現(xiàn)模擬器爬取抖音評(píng)論數(shù)據(jù)的示例代碼的文章就介紹到這了,更多相關(guān)python 擬器爬取數(shù)據(jù)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. python實(shí)現(xiàn)讀取類別頻數(shù)數(shù)據(jù)畫水平條形圖案例2. 關(guān)于HTML5的img標(biāo)簽3. php5.6不能擴(kuò)展redis.so的解決方法4. python 爬取嗶哩嗶哩up主信息和投稿視頻5. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效6. python 如何停止一個(gè)死循環(huán)的線程7. ASP.NET MVC前臺(tái)動(dòng)態(tài)添加文本框并在后臺(tái)使用FormCollection接收值8. JSP動(dòng)態(tài)實(shí)現(xiàn)web網(wǎng)頁(yè)登陸和注冊(cè)功能9. Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送10. PHP獲取時(shí)間戳等相關(guān)函數(shù)匯總
