Loading... 那什么是事儿呢? 1 限制ip 用requests代理,买代理,或者网上免费代理 2 伪装成浏览器 requests切换user agent 3 先登录,保存cookies requests用session先post拿到cookies,再爬 4 URL参数太多,不明白什么意思 webdriver和phantomjs 5 JavaScript和ajax问题 浏览器f12分析请求规律,直接requests请求。或者用webdriver和phantomjs,如果用scrapy的话,用scrapyjs 6 爬的太慢 多线程,别说gil,一般是网络io慢,cpu等io 7 还是慢 scrapy异步(做过几个项目了,挺好用的),pyspider(这个支持Python3) 8 还是慢 分布式(暂时还没涉及),redis,scrapyd 9 验证码 对不起,帮不了你。简单的可以pil,灰度二值化切割识别 10 如果你想自己实现异步请求的话 grequests不错 ## 关于scripy 还是 request+bs4 个人建议还是<b>先使用scrapy快速上手</b>写几个爬虫出来,再学习使用requests+bs4自己写爬虫。 </p><p>原因如下: <br>1、学习一个新东西,首先是先用起来,然后在使用中发现问题,再究其原理,才能深入学习;<br> 2、scrapy不管是否支持python3,如果想学习爬虫原理,都无碍的,因为学习思想最重要; 3、scrapy封装了爬虫的一些核心组件,而且上手简单,如果想以后自己写爬虫框架,它的实现思路还是很值得借鉴的;</p><p>等你用scrapy写出几个爬虫抓几个网站后,这基本算是入门了。</p><p>等你要抓的网站非常多时,就会遇到几个问题:</p><p><b>1、一些网站开始防抓,IP被封?</b><br>随机User-Agent,随机代理,开始用到scrapy的插件。 </p><p><b>2、网页太多,抓的太慢,scrapy默认是不支持分布式的,怎么实现分布式?</b><br>一些分布式的插件就会用起来,例如scrapy-redis。</p><p><b>3、网页越来越多,会不会抓重复?</b><br>哦,原来不会重复抓。看一看scrapy源码,基于url指纹过滤重复的。啊,过滤规则自己可以替换,不错!</p><p><b>4、网站如何深度抓取,如何广度抓取?</b><br>看一看scrapy源码,哦,原来通过实现了栈和队列改变任务的入队顺序,结合配置来控制。</p><p>如果你有足够的兴趣和耐心,有没有发现,从开始使用它,慢慢地你开始关注scrapy的是如何实现了,继续深入源码,你就会发现它的<b>实现思想很巧妙</b>,代码结构<b>低耦合</b>,<b>插件威力</b>巨大!</p><p>好了,下一步你就可以构建自己的爬虫框架了。</p><p><b>为什么要自己写?</b></p><p><b>1、觉得scrapy很多功能用不到?自己喜欢造轮子?</b><br>理解了它的原理,自己精简写一个,还不容易?</p><p><b>2、觉得scrapy的一些功能没有实现?</b><br>例如,如何实现增量抓取?如何基于数据库的任务调度和数据存储?如何分布式抓取?如何做可视化监控?</p><p><b>3、平时很常用的scrapy插件,太多,太散?</b><br>自己封装常用插件、形成组件化,快速配置。</p><p>其实这每一步都是<b>学习、思考、再学习</b>的过程,从<b>使用框架、学习框架、到自己写框架</b>,并不是那么难。 © 允许规范转载