python爬虫爬取哔哩哔哩评论
时间: 2025-02-13 07:51:49 浏览: 86
### 使用Python爬虫抓取哔哩哔哩视频评论数据
为了实现这一目标,可以采用`requests`库发送HTTP请求并获取网页源码中的JSON数据,因为哔哩哔哩的评论通常是以API接口的形式返回结构化的JSON对象[^2]。对于解析这部分内容,则不需要依赖像BeautifulSoup这样的HTML解析器,而是直接处理JSON响应。
下面是一个基本的例子展示怎样通过指定AV号(即视频ID)来收集特定视频下的所有楼层评论:
```python
import requests
from urllib.parse import urlencode
def fetch_comments(bvid, page=1):
url = "https://api.bilibili.com/x/v2/reply"
params = {
'jsonp': 'jsonp',
'pn': str(page),
'type': '1', # 类型为1表示视频
'oid': bvid,
'sort': '2' # 按热度排序
}
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url=url, headers=headers, params=params)
if response.status_code == 200:
data_json = response.json()
replies = data_json['data']['replies']
comments_list = []
for reply in replies:
comment_info = {}
comment_info["uname"] = reply["member"]["uname"]
comment_info["content"] = reply["content"]["message"]
comment_info["like_num"] = reply["like"]
comments_list.append(comment_info)
return comments_list
else:
raise Exception(f"Failed to get the webpage content with status code {response.status_code}")
if __name__ == "__main__":
bv_id = input("请输入要查询的BV号:")
try:
result = fetch_comments(bv_id)
print(result[:5]) # 打印前五个结果作为示例
except Exception as e:
print(e)
```
这段脚本定义了一个名为`fetch_comments()`函数,它接受两个参数:一个是必选的目标视频的BV编号;另一个是可选页面数,默认设置为抓取第一页的数据。该方法会构建访问URL,并附带必要的查询字符串参数以调用B站官方提供的回复列表API接口。成功接收到服务器回应后,程序会对返回的结果进行初步筛选和整理,提取出用户名、点赞数量以及实际留言文字等信息存入字典中再加入到最终输出列表里[^3]。
需要注意的是,在执行上述操作之前应当了解目标网站的服务条款和服务协议,确保自己的行为合法合规。此外,频繁地发起大量请求可能会触发反爬机制导致IP被封禁等问题发生,因此建议合理控制频率或者考虑使用代理池等方式规避风险。
阅读全文
相关推荐


















