[toc] # 一、爬取目標 您好,我是[@馬哥python說](https://www.zhihu.com/people/13273183132),一名10年程式猿。 本次爬取的目標是:[抖音熱榜](https://www.douyin.com/hot) ![抖音熱榜頁面](https://img ...
目錄
一、爬取目標
您好,我是@馬哥python說,一名10年程式猿。
本次爬取的目標是:抖音熱榜
共爬取到50條數據,對應TOP50熱榜。含5個欄位,分別是:
熱榜排名,熱榜標題,熱榜時間,熱度值,熱榜標簽。
用Chrome瀏覽器,右鍵打開開發者模式,選擇:網路->XHR這個選項,重新刷新一下頁面。
操作過程,如下圖所示:
成功找到了50條熱榜數據。
下麵,開始編碼爬蟲代碼。
二、編寫爬蟲代碼
首先,導入需要用到的庫:
import requests
import pandas as pd
import time
定義一個請求地址,即上圖中的目標鏈接地址:
# 介面地址
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'
定義一個請求頭,從開發者模式中的Headers->Request Headers中複製下來:
# 構造請求頭
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?參考下圖:
向目標地址發送請求(帶上請求頭),並用json格式接收返回數據:
# 發送請求
r = requests.get(url, headers=h1)
# 用json接收請求數據
json_data = r.json()
定義一些空列表,用於存儲數據:
position_list = [] # 熱榜排名
title_list = [] # 熱榜標題
time_list = [] # 熱榜時間
hot_value_list = [] # 熱度值
label_list = [] # 熱榜標簽
以“熱榜標題”為例,解析數據:
for data in data_list:
# 熱榜標題
title = data['word']
print('熱榜標題:', position, title)
title_list.append(title)
其他欄位同理,不再贅述。
最後,把解析到的數據,存儲到Dataframe中,並保存到csv文件里:
# 拼裝爬取到的數據為DataFrame
df = pd.DataFrame(
{
'熱榜排名': position_list,
'熱榜標題': title_list,
'熱榜時間': time_list,
'熱度值': hot_value_list,
'熱榜標簽': label_list,
}
)
# 保存結果到csv文件
df.to_csv('抖音熱榜.csv', index=False, encoding='utf_8_sig')
這裡需要註意的是,to_csv要加上encoding='utf_8_sig'參數,防止保存到csv文件產生亂碼數據。
查看部分爬取結果:
共51條數據(含1條置頂熱搜),對應熱榜TOP50排名。
每條數據含5個欄位:熱榜排名,熱榜標題,熱榜時間,熱度值,熱榜標簽。。
三、同步講解視頻
3.1 代碼演示視頻
代碼演示: 【Python爬蟲演示】用Python爬抖音熱榜數據
四、獲取完整源碼
get完整源碼:【爬蟲案例】用Python爬取抖音熱榜數據!
我是@馬哥python說 ,持續分享python源碼乾貨中!