srx-2000 / spider_collection

python爬虫,目前库存:网易云音乐歌曲爬取,B站视频爬取,知乎问答爬取,壁纸爬取,xvideos视频爬取,有声书爬取,微博爬虫,安居客信息爬取+数据可视化,哔哩哔哩视频封面提取器,ip代理池封装,知乎百万级用户爬虫+数据分析,github用户爬虫
MIT License
1.22k stars 221 forks source link

知乎限制爬取速率问题 #28

Closed stu-xsy closed 2 years ago

stu-xsy commented 2 years ago

具体项目 【e.g. 知乎用户爬虫】

bug描述 请问多线程知乎限制爬虫速率的问题解决了吗,我这里一次性只能爬几个

系统环境

srx-2000 commented 2 years ago

嗯....是输入20个,爬取只有五六个就报错嘛,如果是我的建议有以下三种,你可以尝试一下:

  1. 将以下代码中的time.sleep(1)时间延长,这里我使用的是一秒一个线程【主要是为了防止知乎锁ip频次】 https://github.com/srx-2000/spider_collection/blob/3b9f3cc8badc01e3f3e3035c14139d4d5fd1382f/zhihuAnswerSpider/spider/zhihu_answer.py#L198-L201
  2. 可以尝试在不登录知乎时获取cookie,并填写在以下代码处【主要是为了防止知乎锁账户】 https://github.com/srx-2000/spider_collection/blob/3b9f3cc8badc01e3f3e3035c14139d4d5fd1382f/zhihuAnswerSpider/spider/zhihu_answer.py#L22
  3. 可以尝试使用高匿名代理,一般建议高匿名代理还是在网上找一个稳定的这里我就不做推荐了,但如果不想花钱也可以尝试使用本项目中封装的那个代理池进行爬取,但该代理池项目由于本质是从网络上爬取免费的ip代理,所以很多代理其实并不是高匿名的,所以是否有效全看天命了:yum:

上次更新的时候我也仔细检查过各个请求头的参数了,基本都没有大问题,问题主要出现在问答题目获取的那个请求上,同时加之单线程爬取时并没有出现具体bug,所以我感觉只可能是由于多线程下一次并发数量达到了知乎的限频阈值了,所以根据这个猜测提出了上述三种解决方法,目的是为了避免知乎分别根据:ip,cookie对频次进行锁频,如果未来还有什么新的进展我也会继续更新具体补丁的

stu-xsy commented 2 years ago

差不多是爬200个只有20个左右吧,我试试你说的方法,非常感谢

srx-2000 commented 2 years ago

差不多是爬200个只有20个左右吧,我试试你说的方法,非常感谢

好的,望成功

liamnnnn commented 1 year ago

我已收到,谢谢。