用Python爬取指定關(guān)鍵詞的微博
前幾天學(xué)校一個(gè)老師在做微博的輿情分析找我?guī)退阋粋€(gè)用關(guān)鍵字爬取微博的爬蟲,再加上最近很多讀者問志斌微博爬蟲的問題,今天志斌來跟大家分享一下。
一、分析頁面
我們此次選擇的是從移動(dòng)端來對微博進(jìn)行爬取。移動(dòng)端的反爬就是信息校驗(yàn)反爬蟲的cookie反爬蟲,所以我們首先要登陸獲取cookie。

登陸過后我們就可以獲取到自己的cookie了,然后我們來觀察用戶是如何搜索微博內(nèi)容的。
平時(shí)我們都是在這個(gè)地方輸入關(guān)鍵字,來進(jìn)行搜索微博。

我通過在開發(fā)者模式下對這個(gè)頁面觀察發(fā)現(xiàn),它每次對關(guān)鍵字發(fā)起請求后,就會(huì)返回一個(gè)XHR響應(yīng)。

我們現(xiàn)在已經(jīng)找到數(shù)據(jù)真實(shí)存在的頁面了,那就可以進(jìn)行爬蟲的常規(guī)操作了。
二、數(shù)據(jù)采集
在上面我們已經(jīng)找到了數(shù)據(jù)存儲的真實(shí)網(wǎng)頁,現(xiàn)在我們只需對該網(wǎng)頁發(fā)起請求,然后提取數(shù)據(jù)即可。
1、發(fā)起請求
通過對請求頭進(jìn)行觀察,我們不難構(gòu)造出請求代碼。

代碼如下:
key = input("請輸入爬取關(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í)際測試發(fā)現(xià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編碼的,如果直接爬取存儲,將存儲的是Unicode編碼,在這里要感謝大佬—小明哥的幫助,志斌在網(wǎng)上搜了好多解決方法都沒有成功,最后小明哥一個(gè)簡單的函數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程
- 教你用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容
- python實(shí)戰(zhàn)之Scrapy框架爬蟲爬取微博熱搜
- Python模擬登錄微博并爬取表情包
- python趣味挑戰(zhàn)之爬取天氣與微博熱搜并自動(dòng)發(fā)給微信好友
- Python爬蟲爬取微博熱搜保存為 Markdown 文件的源碼
- 如何用python爬取微博熱搜數(shù)據(jù)并保存
- python+selenium爬取微博熱搜存入Mysql的實(shí)現(xiàn)方法
- python制作微博圖片爬取工具
相關(guān)文章
Python基于ImageAI實(shí)現(xiàn)圖像識別詳解
ImageAI是一個(gè)面向計(jì)算機(jī)視覺編程的Python庫,支持最先進(jìn)的機(jī)器學(xué)習(xí)算法。本文將利用ImageAI實(shí)現(xiàn)圖像識別功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-02-02
python按比例隨機(jī)切分?jǐn)?shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了python按比例隨機(jī)切分?jǐn)?shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Django User 模塊之 AbstractUser 擴(kuò)展詳解
這篇文章主要介紹了Django User 模塊之 AbstractUser 擴(kuò)展詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式
今天小編大家分享一篇Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python實(shí)現(xiàn)時(shí)間序列變化點(diǎn)檢測功能
平穩(wěn)性是時(shí)間序列分析與預(yù)測的核心概念,在平穩(wěn)條件下,時(shí)間序列的統(tǒng)計(jì)特性(如均值)在時(shí)間維度上保持不變,僅存在隨機(jī)波動(dòng),但是時(shí)間序列通常會(huì)經(jīng)歷結(jié)構(gòu)性斷裂或變化,本文給大家介紹了Python實(shí)現(xiàn)時(shí)間序列變化點(diǎn)檢測功能,需要的朋友可以參考下2024-09-09
python 實(shí)現(xiàn)將txt文件多行合并為一行并將中間的空格去掉方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)將txt文件多行合并為一行并將中間的空格去掉方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python多進(jìn)程實(shí)現(xiàn)進(jìn)程間通信實(shí)例
這篇文章主要介紹了python多進(jìn)程實(shí)現(xiàn)進(jìn)程間通信實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11

