前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
以下文章來源于CSND,作者嗨學編程
專案背景
小Q發現小P每天在B站的時間特別長,他想和小P深入地交流一下B站,可小Q前段時間學業壓力很大的,一直沒看B站,他想知道現在B站流行什么,那你能幫幫他嗎?
專案目標
實作爬取當前B站排行榜的內容(爬取任一榜單即可),要求包括視頻排名視頻BV號,視頻封面,視頻播放量,視頻評論量, up主姓名
目標網頁分析
獲取資料內容
- 標題
- 播放量
- 彈幕量
- 作者
- 綜合得分
- 詳情頁地址
開發者工具一看,好家伙,就這?
當看到這樣的情況,是真的不用分析什么了,直接就可以從頭到尾開始寫代碼了
直接就是爬蟲三部曲走起了,
1、模擬瀏覽器請求網站獲得網頁資料;
2、決議網頁資料,提取想要的內容;
3、保存資料
完整代碼
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/206050.html
標籤:Python
上一篇:2020年《財富》中國500強排行榜資料爬取,看看都有哪些
下一篇:并發編程 - 執行緒
