利用DrissionPage爬取B站评论,无解密,无逆向,代码复制即用,无需更改。

B站的评论是通过动态加载出来的,使用常规的静态爬取无法正常爬取,但使用常规动态爬取需要解密,此方法非常复杂,且错误率较高,多次试错后可能还会被封IP,但使用DrissionPage完全不用担心上述问题。以下是全部代码。

from DrissionPage import ChromiumPage  #  pip install DrissionPage  
import time  

URL = input("请输入B站视频链接:")  
num = int(input("请输入要爬取的页面次数:"))

page = ChromiumPage()  
page.set.load_mode.none()  

# 监听特定的网络流  
page.listen.start('https://api.bilibili.com/x/v2/reply/wbi/main?')  

# 访问B站页面  
page.get(f'{URL}')  
time.sleep(3)  

for _ in range(num+1):
    page.scroll.to_bottom()
    time.sleep(2)


# 用于存储所有捕获的响应数据  
responses = []  

try:  
    # 循环监听直到达到所需数量或超时  
    for _ in range(num):  
        # 等待网络请求包到达  
        packet = page.listen.wait()  
        
        # 停止加载页面(这步可以根据需求调整)  
        page.stop_loading()  

        # 接收 HTTP 响应内容  
        response_body = packet.response.body  

        # 将响应内容存储到列表中  
        responses.append(response_body)  
 
        time.sleep(1)  

except Exception as e:  
    print(f"解析出现错误: {e}")  

# 处理和打印捕获到的所有响应  
total_comments = 0  

for response in responses:  
    try:  
        if 'data' in response:  
            datas = response['data']['replies']  
            total_comments += len(datas)  
            for data in datas:   
                comments = data['content']['message']
                uname = data['member']['uname']  
                sex = data['member']['sex']  
                IP = data['reply_control']['location']  
                print(f"评论内容: {comments}\n用户名: {uname}\n性别: {sex}\nIP地址: {IP}\n")  

    except KeyError as e:  
        print(f"处理响应时出现错误: {e}")  

page.close()  

# 最后打印总评论数量  
print(f"总评论数量: {total_comments}")

加上一些空余行和注释行外才65行代码。不需要一些用户信息,如'user-agent','cookie'之内的信息。只需要输入B站视频的网址,以及要爬取的视频页面次数。总评论量是要爬取的页面次数乘以20(因为B站视频每次回加载出新的20条评论)。而代码中的网络流是大评论的所在的url。因此,此代码只能爬取大评论,若要爬取大评论下的小评论需要更改网络流。如果只爬取大评论,无需更改任何一处代码。

运行代码后,下拉条回自动下拉,无需手动下拉。当然也可以手动下拉网页右边的下拉条。使用此代码,电脑中应有谷歌浏览器,且B站已经登录。此代码会爬取评论内容,用户名,性别,IP地址。也可以自行添加代码,增加爬取内容。

DrissonPage这个第三方库需要手动下载,cmd里pip install DrissionPage即可,无需像selenium配置浏览器环境。默认的浏览器为谷歌浏览器。

以下是运行结果部分截图。

DrissionPage这个第三方库非常好用。开发者在B站上也有账号。希望大家大家为这位开发者点点赞,点点星。

如果代码运行中有什么疑惑,可以看看我在B站上发的视频,视频里有更详细地解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值