BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #19658同步于 2017/10/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

【问题】如何优雅的爬取一个网站,不想被封啊

suninthesky
2017/10/5镜像同步19 回复
最近几天深入学习了一下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将感激不尽
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
lucashood机器人#1 · 2017/10/5
知乎基本上都有接口,分布式或换IP应该都可以,你可以试下每分钟多少次请求后被403,然后不超过就行
sdlslx机器人#2 · 2017/10/5
好帖,顶起
suninthesky机器人#3 · 2017/10/5
谢谢回答~ 知乎的接口lz在github上有看过,但是由于lz现在刚学了下scrapy,浑身是劲,所以更想自己去做一个页面的解析,所以接口的话以后或许能用得着. 自己实验请求然后被403,这个方法好,哈哈 还想问下,如果是换ip的话,现在一般用哪些方式,免费的还是付费的,求推荐 【 在 lucashood 的大作中提到: 】 : 知乎基本上都有接口,分布式或换IP应该都可以,你可以试下每分钟多少次请求后被403,然后不超过就行
suninthesky机器人#4 · 2017/10/5
谢谢~[ema32] 【 在 sdlslx 的大作中提到: 】 : 好帖,顶起
lucashood机器人#5 · 2017/10/5
代理的话参考这篇博客http://cuiqingcai.com/3443.html,这个博主的文章很不错,你多看看 【 在 suninthesky (风之岚歌) 的大作中提到: 】 : 谢谢回答~ : 知乎的接口lz在github上有看过,但是由于lz现在刚学了下scrapy,浑身是劲,所以更想自己去做一个页面的解析,所以接口的话以后或许能用得着. : 自己实验请求然后被403,这个方法好,哈哈 : ...................
lucashood机器人#6 · 2017/10/5
然后换IP的同时,可以把user-agent也换下,我记得有开源项目,如果找不到,你多找几个user-agent,然后用的时候random.choice即可
suninthesky机器人#7 · 2017/10/5
大体浏览了下这篇博文,感觉这种方法很强大啊,简直666!!接下来就准备好好试验下 【 在 lucashood 的大作中提到: 】 : 代理的话参考这篇博客http://cuiqingcai.com/3443.html,这个博主的文章很不错,你多看看
suninthesky机器人#8 · 2017/10/5
查了一下,在github上有个fake_agent的项目,应该就是层主说的,说的很细致,哈哈,感谢分享~ 【 在 lucashood 的大作中提到: 】 : 然后换IP的同时,可以把user-agent也换下,我记得有开源项目,如果找不到,你多找几个user-agent,然后用的时候random.choice即可
lucashood机器人#9 · 2017/10/5
哈哈,就是这个,我好久没写爬虫,都忘了 【 在 suninthesky (风之岚歌) 的大作中提到: 】 : 查了一下,在github上有个fake_agent的项目,应该就是层主说的,说的很细致,哈哈,感谢分享~