参考:https://www.selenium.dev/
需要提前安装
pip install -U selenium
和下载驱动
https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/
下载后解压,并把解压后的文件复制到系统PATH变量中的某个地址(查看方法:打开命令行输入echo %PATH%(windows系统)),如果不能运行的话可以更换驱动的版本试试
可以这么说,要有谷歌浏览器,要有对应的驱动,再安装了selenium库,最后可以用代码操作浏览器

from selenium import webdriver
import time
import re
# import random # 随机访问间隔?
# 此处使用的是谷歌浏览器
bro = webdriver.Chrome()# bro.get("https://www.bilibili.com/")
bro.get("https://www.bilibili.com/v/popular/rank/all") # 打开排行榜页面
# 获取排行榜tab(全站,番剧,国产动画,国创相关,等等)
# rank_tab = bro.find_elements_by_css_selector("ul.rank-tab>li")
# rank_tab[n].click() # 可以转到对应的分类,这里就用的全站,不再'点击'
# 获取作品列表
# rank_list = bro.find_elements_by_css_selector("ul.rank-list>li")
# 后发现直接点击作品会新建一个标签页,改为获取作品的URL,并使用get(url)转到
li = bro.find_elements_by_css_selector("div.info>a.title") # 作品列表
li_url = [i.get_attribute("href") for i in li] # 作品的URL列表
# 定义几个列表用来储存数据,也可以随查随存
tit_li = [] # 标题
view_li = [] # 播放量
danmu_li = [] # 弹幕数
zan_li = [] # 点赞数
coin_li = [] # 投币数
star_li = [] # 收藏数
share_li = [] # 分享数
# 定义处理函数,
def comp(st):return re.sub(r'<.*?>|\n| ',  '', st)
# 打开‘随查随存’的文件,以'添加'的方式,(如果文件不存在会被创建)
fn = open("bili_all_01.txt", 'a', encoding='utf-8')
# 写入标题、、这里和下面的写入操作也可以import csv来操作,就不用自己输这么多逗号了
fn.write("标题, 播放量, 弹幕数, 点赞量, 投币数, 收藏量, 分享数, 网址, \n")
# 遍历URL
for url in li_url:bro.get(url) # 打开URL# 获取标题//标题也可以在上一个页面获取这些URL的时候一起获取title = bro.find_element_by_css_selector("h1.video-title")get_attribute("title")# 获取播放量view = bro.find_element_by_css_selector("span.view").get_attribute("title")[4:]# 获取弹幕数dm = bro.find_element_by_css_selector("span.dm").get_attribute("title")[7:]# 找到有相关信息的那一块info_li = bro.find_elements_by_css_selector("div.ops>span")zan = info_li[0].get_attribute("title")[3:] # 获取点赞数//也可以像下面三个一样的,不过这里这样得到的可能更准确coin = comp(info_li[1].get_attribute("innerHTML")) # 获取投币数star = comp(info_li[2].get_attribute("innerHTML")) # 获取收藏数share = comp(info_li[3].get_attribute("innerHTML")) # 获取分享次数# 下七行,分别存入列表tit_li.append(title)view_li.append(view)danmu_li.append(dm)zan_li.append(zan)coin_li.append(coin)star_li.append(star)share_li.append(share)# 输出信息# print(title+", "+view+", "+dm+", "+zan+", "+coin+", "+star+", "+share+", "+url)# 尝试写入文件,如果出现UnicodeEncodeError错误,则以网址代替标题(也可以试试去除标题中的异常字符,或者采取其他方法)try:fn.write(title+", "+view+", "+dm+", "+zan+", "+coin+", "+star+", "+share+", "+url+", \n")except UnicodeEncodeError:fn.write(url+", "+view+", "+dm+", "+zan+", "+coin+", "+star+", "+share+", "+url+", \n")# 等5秒,这里不要太小time.sleep(5)# 返回上一页面,可以不返回bro.back()
# 关闭‘随查随存’文件
fn.close()
# 打开另一个文件储存爬到的信息
# 两个保存方法留下一个就可以,两个都留着也可以
# 可以一开始不打开文件,中途不保存,等到查完了在这里统一保存
# 也可以把一开始的七个列表删除,中途的七个信息加入列表的操作删除,下面的保存操作删除,只是随查随存
with open("bili_all_01.scv", 'a',  encoding='utf-8') as f:f.write("标题, 播放量, 弹幕数, 点赞量, 投币数, 收藏量, 分享数, 网址, \n")for i in range(len(tit_li)):try:f.write(tit_li[i]+", "+view_li[i]+", "+danmu_li[i]+", "+zan_li[i]+", "+coin_li[i]+", "+star_li[i]+", "+share_li[i]+", "+li_url[i]+", \n")except UnicodeEncodeError:f.write(li_url[i]+", "+view_li[i]+", "+danmu_li[i]+", "+zan_li[i]+", "+coin_li[i]+", "+star_li[i]+", "+share_li[i]+", "+li_url[i]+", \n")
# 输出done..表示正常运行结束
print("done..")
# 关闭浏览器
bro.close()

上方代码可封装出一个,参数为url,返回标题、播放量、点赞数等的函数。

将上方代码保存文件中的类似“1.5万”的改为“15000”

当然也可以在上面代码中直接处理,更简便

import csv
# 定义处理函数
def comp(ss):try:if(ss[-1]=="万"): # 如果最后一位是“万”字return str(int(eval(ss[:-1])*10000))except IndexError:return ssreturn sswith open("bili_all_01.csv", 'r') as fr:fr_csv = csv.reader(fr)with open("bili_all_02.csv",'w', newline='') as fw:fw_csv = csv.writer(fw)for row in fr_csv:tp = [comp(i) for i in row]fw_csv.writerow(tp)print("done....")

注:上方代码在添加注释时又有了一些小优化,有一定可能会无法运行
date: 2021/12/12
python: 3.9.4
selenium: 4.1.0
pip: 21.3.1
下面几个库,可能有关吧
google-api-core 1.17.0
google-api-python-client 1.9.1
google-auth 1.16.0
google-auth-httplib2 0.0.4
google-cloud-bigquery 1.22.0
google-cloud-core 1.4.3
google-cloud-firestore 1.6.2
google-cloud-pubsub 1.3.1
google-cloud-storage 1.28.1
google-resumable-media 0.5.1
googleapis-common-protos 1.52.0
the end…

python selenium 爬取b站全站排行榜100个视频的播放量 弹幕数 点赞量 投币数 收藏量 分享数相关推荐

  1. python爬取b站搜索结果播放地址_如何利用Python快速爬取B站全站视频信息

    B 站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆.不过 纸上得来终觉浅,绝知此事要躬行,我码故我在.最终爬取到数据总量为 760万 条. 准备工作 首先打开 B 站,随便在首页找一个视频点击进 ...

  2. 大数据Python爬取B站电影排行榜——爬取信息

    大数据Python爬取B站电影排行榜-信息爬取 前言 一.配置环境 二.爬取B站电影排行榜top100 1.找到B站电影排行榜top100网页 2.用URL进行爬取信息 三.建立Excel表并导出 总 ...

  3. python用selenium爬取b站评论并制作词云图

    文章目录 前言 一.爬取b站评论 1.selenium配置 2.代码 二.制作词云图 1.下载停用词 2.代码 3.注意事项 三.制作成品 1.初期成品 2.成品 前言 b站视频下的评论是下拉加载的. ...

  4. 从入门到入土:Python实现爬取某站视频|根据视频编号|支持通过视频名称和创作者名称寻找编号|以及python moviepy合并音频视频

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python实现爬取某站视频|根据视频编号|支持通过视频名称 ...

  5. scrapy+selenium爬取B站生活区热门视频信息!

    在爬取动态网页时,一般尽量先找相应网页的API接口.但当接口不好找(或者接口的URL中含有加密参数)时,这时候就需要selenium来帮忙了.但由于selenium爬取速度比较慢,此时结合scrapy ...

  6. python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名

    目标网站: 首先获取第一页的数据,这里关键要切换到iframe里 打印一下 获取剩下的页数,这里在点击下一页之前需要设置一个延迟,不然会报错. 结果: 一共37页,爬取完毕后关闭浏览器 完整代码: u ...

  7. python爬取b站视频封面_学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面...

    学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面 import os import requests import re import json from bs4 import B ...

  8. 用 Python selenium爬取股票新闻并存入mysql数据库中带翻页功能demo可下载

    用 Python selenium爬取实时股票新闻并存入mysql数据库中 1.分析需求 2.创建表 3.分析需要爬取的网页内容 4.python里面selenium进行爬虫操作 1.添加包 2.连接 ...

  9. Python+Selenium爬取新浪微博评论数据

    Python+Selenium爬取指定新浪微博的数据 微博分析 微博端类型 选择爬取对象 Ajax动态加载数据分析 Python实现代码 微博分析 微博端类型 首先找到一个待爬取的微博,需要注意的是, ...

最新文章

  1. [转] Java中public,private,final,static等概念的解读
  2. Ticker 未释放导致的 CPU 占用过高
  3. 【并发那些事】可见性问题的万恶之源
  4. 解读腾讯极速高清AR-SR的画质改善机制
  5. 如何使用两个堆栈实现队列_使用两个队列实现堆栈
  6. 小程序 || 语句_C ++条件语句| 查找输出程序| 套装1
  7. [poj1742]coin
  8. Java Web学习总结(37)——Filter和Listener详解
  9. ObjC学习3-类、继承、重载
  10. @data注解_SpringBoot入门实践(七)-Spring-Data-JPA实现数据访问
  11. 机器学习实战 利用sklearn库预测科比生涯数据
  12. 苹果6邮件服务器错了如何修改,苹果手机ID电子邮件设错了怎么改
  13. 黑苹果HIDPI开启问题
  14. linux运行ardupilot,ardupilot在Linux上的启动过程
  15. 2023年考研数学测试卷(预测)
  16. AcWing 342. 道路与航线 (双端队列广搜问题,SPFA)
  17. ps怎么抠地图线路_用Photoshop怎么抠地图?
  18. 97年Mekka ’97 4K Intro比赛的一等奖作品
  19. 分布式--雪花算法--使用/原理/实例
  20. 2022年湖南省高职单招(综合素质)考试冲刺试题及答案

热门文章

  1. iOS:iOS开发系列–打造自己的“美图秀秀”(上)
  2. 读取word中表格的数据
  3. arcgis按角度画扇形
  4. java打印插件_怎样使用C-Lodopa插件打印本地图片(Java)
  5. 一个中心+三大原则 -- 阿里巴巴小蜜这样做智能对话开发平台
  6. 数组指针和指针数组的区别
  7. android 粒子跑步动画教程,3dmax怎么做人物跑步动画教程
  8. 跟电子秤连接可以测试体质的软件,可以同时测量 11 项身体数据,这样的华为智能秤你喜欢吗?...
  9. 2010房价下跌(2010房价回归理性)
  10. oracle rac vip不通,oracle RAC环境vip异常的修复