1
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E5%89%A7%E6%83%85&start=10

像这种json获取的链接,倒是没有cookie的要求,即便多线程爬取几百页也没有被ban.


之前直接使用了rq任务队列,导致不知道该怎么写多线程了。

暂时先重新用自带的queue写写看多线程。

目前20个线程爬取10页约200个评论,耗时8.98秒,不过这里固定一个ip测试立马就被ban了。

只是添加了bid的cookie 和 随机UA似乎并不足够.

稍稍追加了一下header,然后用多进程跑起来了……真的伤心,用的其他的再复杂的框架反而失败了,协程也遭遇各式各样的难题,暂时还是用多进程拿下数据吧。

明明使用了可用的代理,但是被ban的却还有我的真实ip,经过测试,和代码无关,是代理问题。透明代理相比高匿代理是否会导致真实ip被ban还没有测试过。

在aiohttp中试图使用https代理时,才意识到https代理像贡献者说的那样没有必要,在V站讨论中,可以看到HTTPS代理仅仅是起到在客户端到代理端之间进行SSL认证的功能,与访问https还是http网站完全没有关系。


在没有用redis持久化时,想到 布隆过滤器似乎也需要持久化,查了一些,似乎基于redis或者pickle序列化持久化都是可选的,但是在找官方文档的时候看到这么一句。

Since this package natively uses mmap files, no serialization is needed. Therefore, if you have to do a lot of moving between disks etc, this module is an obvious win.

mmap是什么文件


在用charles测试抓包的过程中遭遇了SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)'),))问题,似乎与python requests对charles ssl认证有关。

从charles保存根证书导入python requests即可。


参考资料

  1. (requests charles SSL)[https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/]
  2. Python requests请求https遇到问题
  3. HTTP代理和HTTPS代理的区别
  4. 通过一台 HTTPS proxy 上网,这台 proxy 能获得我访问的网址吗?