
前言
本文的文字及圖檔來源于網絡,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理。
目标網頁分析
擷取資料内容
- 标題
- 播放量
- 彈幕量
- 作者
- 綜合得分
- 詳情頁位址
開發者工具一看,好家夥,就這?
當看到這樣的情況,是真的不用分析什麼了,直接就可以從頭到尾開始寫代碼了
直接就是爬蟲三部曲走起了。
1、模拟浏覽器請求網站獲得網頁資料;
2、解析網頁資料,提取想要的内容;
3、儲存資料
#Python學習交流QQ群:778463939
import requests
import parsel
import csv
f = open('B站排行榜資料.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标題', '播放量', '彈幕量', '作者', '綜合得分', '視訊位址'])
csv_writer.writeheader()
url = 'https://www.bilibili.com/v/popular/rank/all?spm_id_from=333.851.b_7072696d61727950616765546162.3'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
selector = parsel.Selector(response.text)
lis = selector.css('.rank-list li')
dit = {}
for li in lis:
title = li.css('.info a::text').get() # 标題
bf_info = li.css('div.content > div.info > div.detail > span:nth-child(1)::text').get().strip() # 播放量
dm_info = li.css('div.content > div.info > div.detail > span:nth-child(2)::text').get().strip() # 彈幕量
bq_info = li.css('div.content > div.info > div.detail > a > span::text').get().strip() # 作者
score = li.css('.pts div::text').get() # 綜合得分
page_url = li.css('.img a::attr(href)').get() # 視訊位址
dit = {
'标題': title,
'播放量': bf_info,
'彈幕量': dm_info,
'作者': bq_info,
'綜合得分': score,
'視訊位址': page_url,
}
csv_writer.writerow(dit)
print(dit)