返回信息流最近几天深入学习了一下scrapy框架,对scrapy整体流程有了一定了解,然后就想写爬虫获取数据,从单纯的技术角度来说,不论是否使用框架,遍历整个网站都不是特别难的事.
以前就听说过爬虫与反爬虫,两者一直都在博弈,随着博弈的进展,就目前而言验证码啥的都不是问题(常规验证码),交给打码平台或者训练神经网络都可以轻松搞定,lz真正困惑的是ip问题,频繁的访问一个网站,ip会被禁用,目前lz知道有以下解决措施:
1.延迟访问.比如设定每个url之间访问时间间隔为10s
2. 使用代理ip/使用tor浏览器.比如西刺网站或者其他收费网站
3. 分布式爬虫.设置多个服务器访问同一个网站
4.其他lz不知道的技术
lz疑惑的是,这些措施分别设置什么样的参数,能达到什么样的效果,如何选择最优方案.针对以上措施,分别有以下问题:
1.假设每个请求之间的时间间隔为10s,有500个列表页,每页有10个url,总共就有5000个请求,仅请求时间间隔就有50000s,将近20个小时,效率太低,生产环境里应该不会这么做,设置更少的间隔时间?一般如何设置?是每请求一个url就sleep一下,还是请求比如20个url就暂停一下?这一条应对反爬虫效果如何?
2.据说西刺网提供的免费ip几乎都不能用,就算使用收费的,适合学生用的比如9元一天的也不好用,而且延时挺大,如果使用洋葱浏览器,经过多次转发,延迟很大,效率也很低.真实情况是怎么样?如何选择比较好
3.分布式爬虫应该是最优的选择了,如果有10个服务器同时访问一个网站,相对原来一台服务器,速度会提升10倍,即使请求间隔长一点也没关系.lz现在在使用digitalocean的服务器,在ds上可以创建多个服务器,用这上边创建的多个服务器来做分布式爬虫是否可行?如果不可行,有没有适合学生并且不太复杂的方案.
这几天在学习scrapy的过程中,关于如何反爬虫的问题,一直萦绕在lz脑海中,始终想知道一个万全之策,可以顺利的把某一个网站爬取下来,lz反而觉在一个爬虫项目中,爬虫的基本解析技术可能仅仅占10%,而90%的策略/难度都用于反爬虫上了,所以别想知道,这一块,在生产环境中和个人开发者里边,反爬虫这一块(lz认为主要是ip问题),一般是如何具体实现的
lz的目的不是爬几百个G的数据,用在商业上,没有那么大,就是出于兴趣,爬一个网站,比如知乎,能够顺利的爬个几十万数据就不错了,然后分析一下就够了.
lz对计算机网络前端后端这一块没有特别深入的了解,仅仅是业余爱好学习,如果哪个地方理解的不对,希望及时指正不要笑话lz[ema1]
抛出的问题有点多,如果能就以上问题的某一个作出回答或者做一些建设性意见,lz将感激不尽
这是一条镜像帖。来源:北邮人论坛 / python / #19658同步于 2017/10/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】如何优雅的爬取一个网站,不想被封啊
suninthesky
2017/10/5镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
谢谢回答~
知乎的接口lz在github上有看过,但是由于lz现在刚学了下scrapy,浑身是劲,所以更想自己去做一个页面的解析,所以接口的话以后或许能用得着.
自己实验请求然后被403,这个方法好,哈哈
还想问下,如果是换ip的话,现在一般用哪些方式,免费的还是付费的,求推荐
【 在 lucashood 的大作中提到: 】
: 知乎基本上都有接口,分布式或换IP应该都可以,你可以试下每分钟多少次请求后被403,然后不超过就行
代理的话参考这篇博客http://cuiqingcai.com/3443.html,这个博主的文章很不错,你多看看
【 在 suninthesky (风之岚歌) 的大作中提到: 】
: 谢谢回答~
: 知乎的接口lz在github上有看过,但是由于lz现在刚学了下scrapy,浑身是劲,所以更想自己去做一个页面的解析,所以接口的话以后或许能用得着.
: 自己实验请求然后被403,这个方法好,哈哈
: ...................
然后换IP的同时,可以把user-agent也换下,我记得有开源项目,如果找不到,你多找几个user-agent,然后用的时候random.choice即可
大体浏览了下这篇博文,感觉这种方法很强大啊,简直666!!接下来就准备好好试验下
【 在 lucashood 的大作中提到: 】
: 代理的话参考这篇博客http://cuiqingcai.com/3443.html,这个博主的文章很不错,你多看看
查了一下,在github上有个fake_agent的项目,应该就是层主说的,说的很细致,哈哈,感谢分享~
【 在 lucashood 的大作中提到: 】
: 然后换IP的同时,可以把user-agent也换下,我记得有开源项目,如果找不到,你多找几个user-agent,然后用的时候random.choice即可
哈哈,就是这个,我好久没写爬虫,都忘了
【 在 suninthesky (风之岚歌) 的大作中提到: 】
: 查了一下,在github上有个fake_agent的项目,应该就是层主说的,说的很细致,哈哈,感谢分享~