前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具备任何商业用途,若有问题请及时联系咱们以做处理。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