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

本文介绍如何使用Python高效爬取B站全站视频信息,通过API获取数据,利用多线程和多进程加快爬取速度,最终爬取到760万条数据,并对数据进行处理和存储。
摘要由CSDN通过智能技术生成

B 站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆。不过 纸上得来终觉浅,绝知此事要躬行,我码故我在。最终爬取到数据总量为 760万 条。

准备工作

首先打开 B 站,随便在首页找一个视频点击进去。常规操作,打开开发者工具。这次是目标是通过爬取 B 站提供的 api 来获取视频信息,不去解析网页,解析网页的速度太慢了而且容易被封 ip。

勾选 JS 选项,F5 刷新

找到了 api 的地址

动手写码

好了,到这里代码就可以码起来了,通过 request 不断的迭代获取数据,为了让爬虫更高效,可以利用多线程。

核心代码result = []

req = requests.get(url, headers=headers, timeout=6).json()

time.sleep(0.6) # 延迟,避免太快 ip 被封

try:

data = req['data']

video = Video(

data['aid'], # 视频编号

data['view'], # 播放量

data['danmaku'], # 弹幕数

data['reply'], # 评论数

data['favorite'], # 收藏数

data['coin'], # 硬币数

data['share'] # 分享数

)

with lock:

res

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用第三方库来实现对B视频播放数据的。其中,常用的库包括requests、beautifulsoup和selenium等。 1. 首先,你需要使用requests库发送HTTP请求获B视频页面的HTML源代码。可以使用以下代码示例: ```python import requests url = 'https://www.bilibili.com/video/BVxxxxxxxxx' # 替换为你要视频链接 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36' } response = requests.get(url, headers=headers) html = response.text ``` 2. 接下来,你可以使用beautifulsoup库解析HTML源代码,提出需要的播放数据。可以使用以下代码示例: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') play_count = soup.find('span', class_='view').text # 获播放量 like_count = soup.find('span', class_='like').text # 获点赞数 comment_count = soup.find('span', class_='reply').text # 获评论数 print('播放量:', play_count) print('点赞数:', like_count) print('评论数:', comment_count) ``` 3. 如果B视频页面采用了动态加载的方式,你可能需要使用selenium库来模拟浏览器行为,确保页面完全加载后再进行数据提。可以使用以下代码示例: ```python from selenium import webdriver url = 'https://www.bilibili.com/video/BVxxxxxxxxx' # 替换为你要视频链接 # 配置Chrome浏览器驱动路径 driver_path = 'C:/path/to/chromedriver.exe' # 替换为你的chromedriver.exe路径 driver = webdriver.Chrome(driver_path) driver.get(url) html = driver.page_source # 使用beautifulsoup解析HTML源代码,提数据 soup = BeautifulSoup(html, 'html.parser') play_count = soup.find('span', class_='view').text # 获播放量 like_count = soup.find('span', class_='like').text # 获点赞数 comment_count = soup.find('span', class_='reply').text # 获评论数 print('播放量:', play_count) print('点赞数:', like_count) print('评论数:', comment_count) driver.quit() # 关闭浏览器驱动 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值