- 一、爬取目標
- 二、爬取結(jié)果
- 三、代碼講解
- 四、技術(shù)總結(jié)
- 五、演示視頻
- 六、附完整源碼
一、爬取目標
您好!我是@馬哥python說,一名10年程序猿。
今天分享一期爬蟲案例,爬取的目標是:今日頭條熱榜的榜單數(shù)據(jù)。
打開今日頭條 首頁,在頁面右側(cè)會看到頭條熱榜,如下:
爬取以上6個關(guān)鍵字段,含:
熱榜排名,熱榜標題,熱度值,熱榜標簽,熱榜分類,熱榜鏈接。
開發(fā)者模式分析:
二、爬取結(jié)果
爬取結(jié)果截圖:
三、代碼講解
首先,導(dǎo)入需要用到的庫:
import requests
import pandas as pd
import re
定義一個請求頭:(爬取目標較簡單,一個User-agent即可)
# 請求頭
h1 = {
'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',
}
定義請求地址:
url = 'https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc'
用requests發(fā)送請求:
# 發(fā)送請求
response = requests.get(url, headers=h1)
查看響應(yīng)碼并以json方式接收返回數(shù)據(jù):
# 查看響應(yīng)碼
print(r.status_code)
# 接收返回數(shù)據(jù)
json_data = r.json()
定義一些空列表,用于存放數(shù)據(jù):
title_list = [] # 熱榜標題
value_list = [] # 熱度值
url_list = [] # 熱榜鏈接
category_list = [] # 熱榜分類
label_list = [] # 熱榜標簽
以"熱榜標題"字段為例:
for data in json_data['data']:
# 熱榜標題
title = data['Title']
print('熱榜標題:', title)
title_list.append(title)
其中,熱榜鏈接比較特殊,接口中返回的url很長,形如:
可以看到,url中從?往后,都是不必要的請求參數(shù)。
所以,用正則表達式把?后面的全部刪掉,提取出id,再進行拼接url,如下:
# 正則表達式提取出鏈接id
url3 = re.search(r"(?<=https:\/\/www\.toutiao\.com\/trending\/)\d+", url2).group(0)
# 拼接鏈接
url4 = 'https://www.toutiao.com/trending/' + str(url3)
最后,把所有字段存放的列表數(shù)據(jù)組成Dataframe格式:
# 把列表數(shù)據(jù)組裝成Dataframe數(shù)據(jù)
df = pd.DataFrame(
{
'熱榜排名': range(1, data_num + 1), # 一共50條
'熱榜標題': title_list,
'熱度值': value_list,
'熱榜標簽': label_list,
'熱榜分類': category_list,
'熱榜鏈接': url_list,
}
)
進一步保存到csv文件里:
# 保存到csv文件
df.to_csv(result_file, header=True, index=False, encoding='utf_8_sig')
以上,核心邏輯講解完畢。
代碼中還含有:解析熱度值、熱榜標簽、熱榜分類、熱榜鏈接字段等,詳見文末完整代碼。
四、技術(shù)總結(jié)
爬取技術(shù)流程:
- requests 發(fā)送請求
- json 解析數(shù)據(jù)
- re 正則表達式提取文本
- pandas 保存csv
五、演示視頻
演示視頻:代碼演示:用python爬頭條熱榜TOP50榜單!
六、附完整源碼
本案例完整源碼已上傳微信公眾號"老男孩的平凡之路",后臺回復(fù)"爬頭條熱榜"即可獲取。 點擊直達:點這里文章來源:http://www.zghlxwxcb.cn/news/detail-712101.html
我是@馬哥python說,一名10年程序猿,持續(xù)分享python干貨中!文章來源地址http://www.zghlxwxcb.cn/news/detail-712101.html
到了這里,關(guān)于【爬蟲實戰(zhàn)】用python爬今日頭條熱榜TOP50榜單!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!