Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Ghauster/BiliUserInfo
B站用户精确信息爬虫 Bilibili爬取精确粉丝数、获赞数、播放数、阅读数
https://github.com/Ghauster/BiliUserInfo
Last synced: 12 days ago
JSON representation
B站用户精确信息爬虫 Bilibili爬取精确粉丝数、获赞数、播放数、阅读数
- Host: GitHub
- URL: https://github.com/Ghauster/BiliUserInfo
- Owner: Ghauster
- License: mit
- Created: 2023-04-10T05:29:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-05-08T10:41:37.000Z (over 1 year ago)
- Last Synced: 2024-08-01T02:29:25.199Z (3 months ago)
- Language: Python
- Size: 52.7 KB
- Stars: 20
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-bilibili-extra - BiliUserInfo - Bilibili 用户精确数据爬虫.![Python](svg/python.svg?raw=true) (其他 / 直播脚本)
README
# Bilibili 用户精确数据爬虫
个人科研用的,用来快速判断一个用户视频创作者还是消费者,即有没有投稿过视频。
一个爬取b站用户信息的Python爬虫。
#### 亮点:能爬取到精确数量的阅读数、播放数、获赞数、粉丝量 + 断点续爬
不会是获赞数4579.7万,而是获赞数45796729。
可用于**定期监测**,分析up主数据的变化。#### 好用的话记得给个star
## 运行环境和依赖
* Python 3.6 或更高版本
* Selenium 库
* OpenPyXL 库
* WebDriverManager 库安装依赖:
pip install selenium openpyxl webdriver_manager## 功能
1. 此爬虫可以获取以下用户信息:
* 昵称
* 个人简介
* 关注数
* 粉丝数
* 获赞数
* 播放数
* 阅读数
* 视频投稿数
这些数据将保存在名为 output.xlsx 的 Excel 文件中。2. **断点续爬**:允许您在程序意外中断或手动停止后从上次中断的地方继续爬取数据,不用改动user_ids.txt手动删除已爬取的部分,为任务量较大的爬虫任务提供了方便。
实现方式:
* 首先,检查输出文件(例如 'output.xlsx')是否存在。如果不存在,程序将创建一个新的工作表并添加标题行。如果文件存在,程序将加载现有的工作表。
* 计算已经爬取的用户数量(即Excel表格中的行数减去标题行),并将其赋值给num_count。
* 当遍历用户ID列表以获取数据时,程序会从上次爬取的用户ID之后继续爬取。这是通过在循环中使用user_ids[num_count:]来实现的,这样可以从用户ID列表的num_count位置开始遍历。
* 每次爬取一个用户的数据后,程序会将数据写入Excel文件。这意味着即使程序在某个时刻中断,您仍然保留了所有已经爬取的数据。
* 当您重新运行程序时,它将自动从上次中断的地方继续爬取数据。## 使用方法
* 将用户ID保存到名为 user_ids.txt 的文件中,每行一个。
* 运行 Python 爬虫脚本:python bilibili_user_info_scraper.py(或pycharm等软件打开运行)。
* 当提示登录时,请手动登录您的 Bilibili 账户。登录完成后,按回车键继续。
* 爬虫将开始抓取用户信息,并将结果保存到 output.xlsx 文件中。
* 完成后,关闭浏览器并检查 output.xlsx 文件以查看提取的数据。## 注意事项
1. 在输出结果中,如果某个单元格的值为 -1,表示该值未能成功抓取。
2. 目前设置的间隔时间较短,大批量爬取意味着高频次访问,B站可能会阻止(**要求输入验证码或页面空白导致值未能成功爬取**),遇到这种情况可适当调大等待时间重试。