最近什么最火?非#卡塔尔世界杯#莫属,今日凌晨两场点球大战,巴西败北(我巴西球迷,祝马儿加油吧),梅西晋级。那么编程如何蹭蹭世界杯的热点呢?先用python爬一些世界杯视频数据看看吧。
分析
一、步骤
打开B站,在首页输入搜索关键字,点击查询跳转到搜索结果页面
读取页面信息,并抓取所需数据,然后点击下一页
循环上面过程直至最后一页。
数据: 标题、播放量、弹幕数、UP主、发布时间
二、开发技术
Python + selenium + beautifulsoup + xlwt
使用命令pip list 检查下面包是否已经安装,没有安装可以使用下面命令进行安装,我的是Pip3
1 | pip3 install selenium==3.8.0 ## 4.0版本之后不支持plantomJs |
安装chrome驱动,先查看chrome浏览器版本,找到对应的版本号(最接近自己的),下载,然后解压到任意目录即可。
chrome驱动下载地址:
https://registry.npmmirror.com/binary.html?path=chromedriver/
代码示例
1、打开B站
1 | # 创建chrome浏览器驱动 |
2、点击首页搜索并返回页码
1 | # 取得浏览器中的搜索框 并输入查询关键字 |
3、页面加载并读取
1 | # 等待页面加载完成(判断是否有下一页按钮) |
4、bs获取页面中数据
1 | soup = BeautifulSoup(html, 'lxml') |
5、点击下一页
1 | # 取得下一页按钮 |
6、保存数据到Excel
1 | # 创建excel |
7、入口函数
1 | if __name__ == '__main__': |
结果
如图
分别搜索了”卡塔尔 世界杯” 和”梅西 阿根廷”,生成了两个Excel文件,可以修改变量 key_words 检索B站任意数据结果
问题
- 主要是XPath取页面元素的问题,取不到页面元素,多检查是否漏(多)括号。
- 读不到页面元素,可能是网络加载慢导致的,一:可以time.sleep(1) 1-2秒一下试试;二:重新运行试试。
- B站有反爬机制,UI有可能升级更新,程序报错找不到对应html元素,这个只能事先说明:2022-12-10日的代码
完整代码
Github: https://github.com/BraveChi/bzscrpy.git
PS
- WebDriveWait类
- 各浏览器驱动下载