python爬虫:Selenium爬取B站视频标题、播放量、发布时间
上次尝试了利用Ajax机制爬取B站视频播放量等数据(链接在下方),但是发现响应的JSON数据中没有发布时间的数据,这次决定用Selenium试一下。
python爬虫:Ajax爬取B站视频标题、播放量、评论量.
Selenium
Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面源代码,做到可见即可爬。相比于之前的爬虫它的速度会慢一些,但不会被Ajax动态加载等反爬机制干扰,可以直接进入开发者模式查找元素。
具体实现
先来看一下爬取的这个页面,是b站一位up主的主页,全部视频共有21页。
接下来导入库。
from selenium import webdriver
from selenium.webdriver import ChromeOptions
import pandas as pd
声明浏览器对象并定义URL,URL包含一个page参数,代表当前页面。
option = ChromeOptions()
option.add_argument('--headless')
browser = webdriver.Chrome(options=option)
browser.implicitly_wait(10)
INDEX_URL = 'https://space.bilibili.com/390461123/video?tid=0&page={page}&keyword=&order=pubdate'
TOTAL_PAGE = 21
这里加上“headless”这个参数后运行时就不会跳出一个新的浏览器窗口。implicitly_wait是设置隐式延时等待,防止出现找不到元素的错误(页面加载不及时)。
我们再定义几个list保存爬取的数据。
title_list, play_list, time_list = [], [], []
接下来我们打开浏览器开发者模式,查找我们需要的元素。
找到了元素的class,我们就可以用css选择器来选取元素。
def scrape_index(page):url = INDEX_URL.format(page=page)browser.get(url)title = browser.find_elements_by_css_selector('.small-item .title')play = browser.find_elements_by_css_selector('.small-item .play')time = browser.find_elements_by_css_selector('.small-item .time')for item in title:title_list.append(item.text)for item in play:play_list.append(item.text)for item in time:time_list.append(item.text)
这里定义了一个爬取页面的方法,把页码作为参数传进去。再用css选择器获取节点。获取的节点的类型都是 WebElement,多个节点以列表形式返回。再用text方法获取节点的文本属性即可。
开始爬取,并将结果存入dataframe。
for page in range(1, TOTAL_PAGE + 1):scrape_index(page)data = {'title': title_list,'play': play_list,'time': time_list}
df = pd.DataFrame(data)
df
结果如下。
OK,完成。
简单地分析一下数据。
df[df['title'].str.contains("斤")]
包含“斤”字的标题有283个。
df[df['title'].str.contains("过瘾")]
包含“过瘾”的标题有352个。
这或许是高播放量的秘诀之一?
python爬虫:Selenium爬取B站视频标题、播放量、发布时间相关推荐
- python爬虫_爬取B站视频标题
着手写爬虫前,需要了解的几个概念: URL 全称 Uniform Resource Locator (统一资源定位器),格式为:协议+主机+端口+路径. 比如:https://www.bilibili ...
- python爬取b站视频封面_学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面...
学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面 import os import requests import re import json from bs4 import B ...
- python抓取视频违法吗,科学网—【python爬虫】抓取B站视频相关信息(一) - 管金昱的博文...
昨天我在B站上写了这么一篇文章,但是被他们锁住了.无奈之下我复制到知乎上先保存起来 在这篇名为<三天学会用python进行简单地爬取B站网页视频数据>文章中我主要提到了两点在已知aid的情 ...
- python用selenium爬取b站评论并制作词云图
文章目录 前言 一.爬取b站评论 1.selenium配置 2.代码 二.制作词云图 1.下载停用词 2.代码 3.注意事项 三.制作成品 1.初期成品 2.成品 前言 b站视频下的评论是下拉加载的. ...
- 如何去使用Python爬虫来爬取B站的弹幕数据?
哔哩哔哩众所周知是弹幕的天堂,视频观看人数越多,弹幕也就越多.今天小千就来教大家如何去使用Python开发一个爬虫来爬取B站的弹幕数据. 1.弹幕哪里找? 平常我们在看视频时,弹幕是出现在视频上的.实 ...
- [python爬虫] Selenium爬取内容并存储至MySQL数据库
前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的.这篇文章主要讲述通过Selenium ...
- Python爬虫——selenium爬取网易云评论并做词云
大家好!我是霖hero 到点了上号网易云,很多人喜欢到夜深人静的时候,在网易云听音乐发表评论,正所谓:自古评论出人才,千古绝句随口来,奈何本人没文化,一句卧槽行天下!评论区集结各路大神,今天我们来爬取 ...
- [python爬虫] selenium爬取局部动态刷新网站(URL始终固定)
在爬取网站过程中,通常会遇到局部动态刷新情况,当你点击"下一页"或某一页时,它的数据就进行刷新,但其顶部的URL始终不变.这种局部动态刷新的网站,怎么爬取数据呢?某网站数据显示如下 ...
- python爬虫之使用selenium爬取b站视频信息
前言 在之前提到爬虫时,我想到的步骤大多是: 查找要爬取内容的页面的url,使用requests库获取响应内容 内容为html源码则使用BeautifulSoup等工具解析html源码,得到想要的数据 ...
最新文章
- 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版
- ubuntu 挂在smb服务器的方法
- modelsim显示状态机名称的方法
- SpringCloud(第 054 篇)简单 Quartz-Cluster 微服务,采用注解配置 Quartz 分布式集群... 1
- 如何通过图片识别用的什么字体?
- 揭密 GaussDB T 主备物理复制搭建过程(全)
- linux线程同步 eventfd,用 eventfd 在线程之间通信
- 【报告分享】华为2019年财报.pdf(附下载链接)
- opencv 处理黑夜_基于 opencv图像去噪
- bzoj3620 似乎在梦中见过的样子
- PR开场片头视频模板 多帧城市闪点社交媒体短视频pr模板
- 无线路由器密码破解-BT3-spoonwep2
- wangeditor光标乱跑,回车换行又返回来问题
- Vue项目设置局域网链接访问
- Kubernetes Pod调度策略
- kernel编译错误R_ARM_THM_JUMP19
- matlab的置换,来自CLUSTERGRAM对象的置换向量(MATLAB)
- 按照网络规模来分,服务器分为哪几类?
- erc20根据合约地址获取所有交易记录
- instanceof java 报错_java中instanceof怎么理解?java中instanc 爱问知识人
热门文章
- 点的旋转(4):四元数的乘法
- ElasticSearch之中文、拼音分词
- 怎样优化电商购物流程?
- 极简视频录制/剪辑工具-Camtasia Studio9
- 【CSS 文字渐变、背景渐变实现方式】
- 基于PHP+MySQL高校教务选课系统的设计与实现
- 人工智能+看病快准佳
- 【附源码】Java计算机毕业设计安卓电影院售票管理APP论文(程序+LW+部署)
- 微型计算机控制技术第一章绪论
- java.io.IOException: exception unwrapping private key - java.security.InvalidKeyException