前言
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,若有問題請及時聯繫咱們以做處理。css
如下文章來源於CSND,做者嗨學編程編程
項目背景
小Q發現小P天天在B站的時間特別長,他想和小P深刻地交流一下B站,可小Q前段時間學業壓力很大的,一直沒看B站,他想知道如今B站流行什麼,那你能幫幫他嗎?瀏覽器
項目目標
實現爬取當前B站排行榜的內容(爬取任一榜單便可),要求包括視頻排名視頻BV號,視頻封面,視頻播放量,視頻評論量, up主姓名網絡
目標網頁分析
獲取數據內容工具
- 標題
- 播放量
- 彈幕量
- 做者
- 綜合得分
- 詳情頁地址
開發者工具一看,好傢伙,就這?學習
當看到這樣的狀況,是真的不用分析什麼了,直接就能夠從頭至尾開始寫代碼了網站
直接就是爬蟲三部曲走起了。url
一、模擬瀏覽器請求網站得到網頁數據;
二、解析網頁數據,提取想要的內容;
三、保存數據spa
完整代碼
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)
本文分享 CSDN - 松鼠愛吃餅乾。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。.net