溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用Python爬取指定關(guān)鍵詞

發(fā)布時(shí)間:2021-06-12 11:46:17 來(lái)源:億速云 閱讀:1393 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了如何用Python爬取指定關(guān)鍵詞,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

01分析頁(yè)面

我們此次選擇的是從移動(dòng)端來(lái)對(duì)微博進(jìn)行爬取。移動(dòng)端的反爬就是信息校驗(yàn)反爬蟲(chóng)的cookie反爬蟲(chóng),所以我們首先要登陸獲取cookie。

如何用Python爬取指定關(guān)鍵詞

登陸過(guò)后我們就可以獲取到自己的cookie了,有不懂的小伙伴可以看這篇文章學(xué)會(huì)Cookie,解決登錄爬取的困擾!。然后我們來(lái)觀察用戶是如何搜索微博內(nèi)容的。

平時(shí)我們都是在這個(gè)地方輸入關(guān)鍵字,來(lái)進(jìn)行搜索微博。

如何用Python爬取指定關(guān)鍵詞

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

如何用Python爬取指定關(guān)鍵詞

我們現(xiàn)在已經(jīng)找到數(shù)據(jù)真實(shí)存在的頁(yè)面了,那就可以進(jìn)行爬蟲(chóng)的常規(guī)操作了。

02數(shù)據(jù)采集

在上面我們已經(jīng)找到了數(shù)據(jù)存儲(chǔ)的真實(shí)網(wǎng)頁(yè),現(xiàn)在我們只需對(duì)該網(wǎng)頁(yè)發(fā)起請(qǐng)求,然后提取數(shù)據(jù)即可。

01發(fā)起請(qǐng)求

通過(guò)對(duì)請(qǐng)求頭進(jìn)行觀察,我們不難構(gòu)造出請(qǐng)求代碼。

如何用Python爬取指定關(guān)鍵詞

代碼如下:

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)

02提取數(shù)據(jù)

從上面我們觀察發(fā)現(xiàn)這個(gè)數(shù)據(jù)可以轉(zhuǎn)化成字典來(lái)進(jìn)行爬取,但是經(jīng)過(guò)我實(shí)際測(cè)試發(fā)現(xiàn),用正則來(lái)提取是最為簡(jiǎn)單方便的,所以這里展示的是正則提取的方式,有興趣的讀者可以嘗試用字典方式來(lái)提取數(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è)小問(wèn)題要注意,微博的標(biāo)題是用Unicode編碼的,如果直接爬取存儲(chǔ),將存儲(chǔ)的是Unicode編碼,在這里要感謝大佬—小明哥的幫助,志斌在網(wǎng)上搜了好多解決方法都沒(méi)有成功,最后小明哥一個(gè)簡(jiǎn)單的函數(shù)就給解決了,實(shí)在是佩服!

解決方案:用eval()來(lái)輸出標(biāo)題,就可以將Unicode轉(zhuǎn)換成漢字了。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何用Python爬取指定關(guān)鍵詞”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI