- 一、爬取目標(biāo)
- 二、編寫爬蟲代碼
- 三、同步視頻講解
- 四、完整源碼
一、爬取目標(biāo)
您好,我是@馬哥python說,一名10年程序猿。
本次爬取的目標(biāo)是:百度熱搜榜
分別爬取每條熱搜的:
熱搜標(biāo)題、熱搜排名、熱搜指數(shù)、描述、鏈接地址。
下面,對(duì)頁面進(jìn)行分析。
經(jīng)過分析,此頁面有XHR鏈接,可以針對(duì)接口進(jìn)行爬取。
打開Chrome瀏覽器,按F12進(jìn)入開發(fā)者模式,依次點(diǎn)擊:
- 點(diǎn)擊Network,選擇網(wǎng)絡(luò)
- 點(diǎn)擊XHR,選擇XHR請(qǐng)求
- 選擇目標(biāo)鏈接地址
- 擊Preview,選擇預(yù)覽
- 查看返回?cái)?shù)據(jù)
操作過程,如下圖所示:
二、編寫爬蟲代碼
首先,導(dǎo)入需要用到的庫:
import requests # 發(fā)送請(qǐng)求
import pandas as pd # 存入excel數(shù)據(jù)
定義一個(gè)百度熱搜榜接口地址:
# 百度熱搜榜地址
url = 'https://top.baidu.com/api/board?platform=wise&tab=realtime'
構(gòu)造一個(gè)請(qǐng)求頭,偽裝爬蟲:
# 構(gòu)造請(qǐng)求頭
header = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Mobile Safari/537.36',
'Host': 'top.baidu.com',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'Referer': 'https://top.baidu.com/board?tab=novel',
}
向百度頁面發(fā)送requests請(qǐng)求:
# 發(fā)送請(qǐng)求
r = requests.get(url, header)
返回的數(shù)據(jù)是json格式的,直接用r.json()接收:
# 用json格式接收請(qǐng)求數(shù)據(jù)
json_data = r.json()
這里,需要注意的是,頁面上有2種熱搜:
百度熱搜榜最上面一條是置頂熱搜,下面從1到30是普通熱搜,接口返回的數(shù)據(jù)也是區(qū)分開的:
所以,爬蟲代碼需要分開處理邏輯:
置頂熱搜:
# 爬取置頂熱搜
top_content_list = json_data['data']['cards'][0]['topContent']
普通熱搜:
# 爬取普通熱搜
content_list = json_data['data']['cards'][0]['content']
然后再分別進(jìn)行json解析,對(duì)應(yīng)的字段(標(biāo)題、排名、熱搜指數(shù)、描述、鏈接地址)。
最后,保存結(jié)果數(shù)據(jù)到excel即可。
df = pd.DataFrame( # 拼裝爬取到的數(shù)據(jù)為DataFrame
{
'熱搜標(biāo)題': title_list,
'熱搜排名': order_list,
'熱搜指數(shù)': score_list,
'描述': desc_list,
'鏈接地址': url_list
}
)
df.to_excel('百度熱搜榜.xlsx', index=False) # 保存結(jié)果數(shù)據(jù)
最后,查看一下爬取到的數(shù)據(jù):
一共31條數(shù)據(jù)(1條置頂熱搜+30條普通熱搜)。
每條數(shù)據(jù)包含:熱搜標(biāo)題、熱搜排名、熱搜指數(shù)、描述、鏈接地址。
三、同步視頻講解
講解視頻:https://www.zhihu.com/zvideo/1490668062617161728
四、完整源碼
get完整源碼:【爬蟲案例】用Python爬取百度熱搜榜數(shù)據(jù)!文章來源:http://www.zghlxwxcb.cn/news/detail-546680.html
我是@馬哥python說,持續(xù)分享python源碼干貨中!文章來源地址http://www.zghlxwxcb.cn/news/detail-546680.html
到了這里,關(guān)于【爬蟲案例】用Python爬取百度熱搜榜數(shù)據(jù)!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!