用Python爬取指定關(guān)鍵詞的微博
前幾天學(xué)校一個(gè)老師在做微博的輿情分析找我?guī)退阋粋€(gè)用關(guān)鍵字爬取微博的爬蟲,再加上最近很多讀者問志斌微博爬蟲的問題,今天志斌來跟大家分享一下。
一、分析頁(yè)面
我們此次選擇的是從移動(dòng)端來對(duì)微博進(jìn)行爬取。移動(dòng)端的反爬就是信息校驗(yàn)反爬蟲的cookie
反爬蟲,所以我們首先要登陸獲取cookie
。
登陸過后我們就可以獲取到自己的cookie
了,然后我們來觀察用戶是如何搜索微博內(nèi)容的。
平時(shí)我們都是在這個(gè)地方輸入關(guān)鍵字,來進(jìn)行搜索微博。
我通過在開發(fā)者模式下對(duì)這個(gè)頁(yè)面觀察發(fā)現(xiàn),它每次對(duì)關(guān)鍵字發(fā)起請(qǐng)求后,就會(huì)返回一個(gè)XHR響應(yīng)。
我們現(xiàn)在已經(jīng)找到數(shù)據(jù)真實(shí)存在的頁(yè)面了,那就可以進(jìn)行爬蟲的常規(guī)操作了。
二、數(shù)據(jù)采集
在上面我們已經(jīng)找到了數(shù)據(jù)存儲(chǔ)的真實(shí)網(wǎng)頁(yè),現(xiàn)在我們只需對(duì)該網(wǎng)頁(yè)發(fā)起請(qǐng)求,然后提取數(shù)據(jù)即可。
1、發(fā)起請(qǐng)求
通過對(duì)請(qǐng)求頭進(jìn)行觀察,我們不難構(gòu)造出請(qǐng)求代碼。
代碼如下:
key = input("請(qǐng)輸入爬取關(guān)鍵字:") for page in range(1,10): params = ( ('containerid', f'100103type=1&q={key}'), ('page_type', 'searchall'), ('page', str(page)), ) response = requests.get('https://m.weibo.cn/api/container/getIndex', headers=headers, params=params)
2、提取數(shù)據(jù)
從上面我們觀察發(fā)現(xiàn)這個(gè)數(shù)據(jù)可以轉(zhuǎn)化成字典來進(jìn)行爬取,但是經(jīng)過我實(shí)際測(cè)試發(fā)現(xiàn),用正則來提取是最為簡(jiǎn)單方便的,所以這里展示的是正則提取的方式,有興趣的讀者可以嘗試用字典方式來提取數(shù)據(jù)。
代碼如下:
r = response.text title = re.findall('"page_title":"(.*?)"',r) comments_count = re.findall('"comments_count":(.*?),',r) attitudes_count = re.findall('"attitudes_count":(.*?),',r) for i in range(len(title)): print(eval(f"'{title[i]}'"),comments_count[i],attitudes_count[i])
在這里有一個(gè)小問題要注意,微博的標(biāo)題是用Unicode
編碼的,如果直接爬取存儲(chǔ),將存儲(chǔ)的是Unicode
編碼,在這里要感謝大佬—小明哥的幫助,志斌在網(wǎng)上搜了好多解決方法都沒有成功,最后小明哥一個(gè)簡(jiǎn)單的函數(shù)就給解決了,實(shí)在是佩服!
解決方案:用eval()來輸出標(biāo)題,就可以將Unicode轉(zhuǎn)換成漢字了。
三、小結(jié)
1. 本文詳細(xì)介紹了如何用Python
指定關(guān)鍵字爬取微博,有興趣的讀者可以嘗試自己動(dòng)手練習(xí)一下。
2. 本文僅供讀者學(xué)習(xí)使用,不做其他用途!
到此這篇關(guān)于用Python爬取指定關(guān)鍵詞的微博的文章就介紹到這了,更多相關(guān)Python爬取指定關(guān)鍵詞的微博內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。