Open Ciment0 opened 1 year ago
推
你可以尝试把循环次数改大一些,并且调整停止策略,你可以比较上一次和这一次爬取评论之后,那个comment列表的长度有没有改变,如果有改变说明有新数据进来,如果没改变说明到头了。至于为什么数据无法爬取完毕,我在最开始设计的时候就指定了100个循环,还有每次都要保证是20条评论数据的停止策略可能不对。所以你可以尝试我给你说的这种方法进行修改
主要还是每次都必须有20条的评论数据这个停止策略有问题
for i in range(1, page_num):
pre_comment_length = len(comment)
responses = requests.get(url=url.format(i), headers=header, proxies=proxy).json()
for content in responses["data"]["replies"]:
comment.append(content["content"]["message"])
print("搜集到%d条评论" % (len(comment)))
# 爬虫退出策略,比对上一次的comment长度和这一次的长度,相等就退出
if len(comment) == pre_comment_length:
print("评论爬取完毕!!!")
break
else:
continue
这样的话应该会好一些,具体测试一下,如果有啥其他不对的也可以指出
我已更新了代码和文档你可以参考一下,如果还有什么bug可以继续提出
首先感谢作者的耐心回答,问问题之后我也尝试研究了评论数据json,感觉作者的代码,需要在往深处爬一层,responses['data']['replies'][0-19]["content"]["message"]是第一层的评论信息,但在该评论下还有很大一部信息,需要在嵌套一层循环进行爬取,数据为responses['data']['replies'][0-19]['replies'][0-19]["content"]["message"]且无法确定第二层具体有无评论,有多少评论?不知是否有更好的解决方法!!!
可以看一下json文件的格式吗?我貌似没有研究到
可以试试这条评论的数据,replies下面还有replies且有些不为空。
我也试着加过,但效果不好,且存在异常,会中途弹出!!!整不明白@~@!
还有一个想法,就是循环两百条的限制可否解除,但爬取一些极大的评论,如50000条时,因为只循环200,每次爬20,最多只能爬取4000条评论。
你这个好像不是那些up主发的那种视频把
他这个只能抓评论数据,没有写抓评论的评论的数据的功能
明白了
那数字200能否改成跑完全部后停止-0-
可以但是不准备这么做,你可以自行修改。
---原始邮件--- 发件人: @.> 发送时间: 2023年4月14日(周五) 中午1:46 收件人: @.>; 抄送: @.**@.>; 主题: Re: [1837669410/bilibili_comment_crawl] question关于程序的一些问题 (Issue #1)
那数字200能否改成跑完全部后停止-0-
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
作者,你好,程序可以正常使用,但使用该程序存在大量评论数据的缺失的问题,不知道有何种办法解决?一个视频3000多条评论,程序只能爬取1500条数据,另一个视频150条评论,只能爬取65条,希望作者出手相助。还有程序所爬起的数据在最开始几条数据存在重复的问题。 如果作者有更好的程序,希望作者可以退给我,谢谢