- 一、爬取目標(biāo)
- 二、編寫爬蟲代碼
-
三、同步講解視頻
- 3.1 代碼演示視頻
- 四、獲取完整源碼
一、爬取目標(biāo)
您好,我是@馬哥python說,一名10年程序猿。
本次爬取的目標(biāo)是:抖音熱榜
共爬取到50條數(shù)據(jù),對(duì)應(yīng)TOP50熱榜。含5個(gè)字段,分別是:
熱榜排名,熱榜標(biāo)題,熱榜時(shí)間,熱度值,熱榜標(biāo)簽。
用Chrome瀏覽器,右鍵打開開發(fā)者模式,選擇:網(wǎng)絡(luò)->XHR這個(gè)選項(xiàng),重新刷新一下頁面。
操作過程,如下圖所示:
成功找到了50條熱榜數(shù)據(jù)。
下面,開始編碼爬蟲代碼。
二、編寫爬蟲代碼
首先,導(dǎo)入需要用到的庫:
import requests
import pandas as pd
import time
定義一個(gè)請(qǐng)求地址,即上圖中的目標(biāo)鏈接地址:
# 接口地址
url = 'https://www.douyin.com/aweme/v1/web/hot/search/list/?device_platform=webapp&aid=6383&channel=channel_pc_web&detail_list=1&source=6&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1440&screen_height=900&browser_language=en-US&browser_platform=MacIntel&browser_name=Chrome&browser_version=114.0.0.0&browser_online=true&engine_name=Blink&engine_version=114.0.0.0&os_name=Mac+OS&os_version=10.15.7&cpu_core_num=4&device_memory=8&platform=PC&downlink=1.5&effective_type=3g&round_trip_time=600&webid=7246602757481154103&msToken=A-dVF1R3L6t6yeYNVsnPA7YMBkohetjMSING0Q3C3UGXBq7B_lhuJVv6N1hF8Yum9qxQMMVa_GiSsER1Yf595bF5Q_O3-JY1hQ8s-ZPB21PCVYL5C7PEjQiPAMGtGg==&X-Bogus=DFSzswVOXn0ANcrmtjl2YN7TlqSE'
定義一個(gè)請(qǐng)求頭,從開發(fā)者模式中的Headers->Request Headers中復(fù)制下來:
# 構(gòu)造請(qǐng)求頭
h1 = {
'Cookie': '換成自己的cookie值',
'Accept': 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Host': 'www.douyin.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
'Referer': 'https://www.douyin.com/hot',
'Connection': 'keep-alive'
}
不知如何獲取Cookie?參考下圖:
向目標(biāo)地址發(fā)送請(qǐng)求(帶上請(qǐng)求頭),并用json格式接收返回?cái)?shù)據(jù):
# 發(fā)送請(qǐng)求
r = requests.get(url, headers=h1)
# 用json接收請(qǐng)求數(shù)據(jù)
json_data = r.json()
定義一些空列表,用于存儲(chǔ)數(shù)據(jù):
position_list = [] # 熱榜排名
title_list = [] # 熱榜標(biāo)題
time_list = [] # 熱榜時(shí)間
hot_value_list = [] # 熱度值
label_list = [] # 熱榜標(biāo)簽
以“熱榜標(biāo)題”為例,解析數(shù)據(jù):
for data in data_list:
# 熱榜標(biāo)題
title = data['word']
print('熱榜標(biāo)題:', position, title)
title_list.append(title)
其他字段同理,不再贅述。
最后,把解析到的數(shù)據(jù),存儲(chǔ)到Dataframe中,并保存到csv文件里:
# 拼裝爬取到的數(shù)據(jù)為DataFrame
df = pd.DataFrame(
{
'熱榜排名': position_list,
'熱榜標(biāo)題': title_list,
'熱榜時(shí)間': time_list,
'熱度值': hot_value_list,
'熱榜標(biāo)簽': label_list,
}
)
# 保存結(jié)果到csv文件
df.to_csv('抖音熱榜.csv', index=False, encoding='utf_8_sig')
這里需要注意的是,to_csv要加上encoding='utf_8_sig'參數(shù),防止保存到csv文件產(chǎn)生亂碼數(shù)據(jù)。
查看部分爬取結(jié)果:
共51條數(shù)據(jù)(含1條置頂熱搜),對(duì)應(yīng)熱榜TOP50排名。
每條數(shù)據(jù)含5個(gè)字段:熱榜排名,熱榜標(biāo)題,熱榜時(shí)間,熱度值,熱榜標(biāo)簽。。
三、同步講解視頻
3.1 代碼演示視頻
代碼演示: 【Python爬蟲演示】用Python爬抖音熱榜數(shù)據(jù)
四、獲取完整源碼
get完整源碼:【爬蟲案例】用Python爬取抖音熱榜數(shù)據(jù)!文章來源:http://www.zghlxwxcb.cn/news/detail-596424.html
我是@馬哥python說 ,持續(xù)分享python源碼干貨中!文章來源地址http://www.zghlxwxcb.cn/news/detail-596424.html
到了這里,關(guān)于【爬蟲案例】用Python爬取抖音熱榜數(shù)據(jù)!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!