前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

在这里插入图片描述

目标网页分析

获取数据内容

  • 标题
  • 播放量
  • 弹幕量
  • 作者
  • 综合得分
  • 详情页地址

在这里插入图片描述
开发者工具一看,好家伙,就这?
在这里插入图片描述
当看到这样的情况,是真的不用分析什么了,直接就可以从头到尾开始写代码了

直接就是爬虫三部曲走起了。

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)

在这里插入图片描述


本文转载:CSDN博客