最近在超市闲逛的时候,发现不少物品都在进行打折活动。在屯粮食方面纠结了好一会,就拿油来说,有不同的品牌和不同油的种类,虽然最后都是用来吃的。同样小编最近学习python爬虫模块,在选择框架上也纠结了一下子,毕竟除了scrapy框架外,还有requests, bs4等等,那么该如何选择呢?
建议还是先使用scrapy快速上手写几个爬虫出来,再学习使用requests+bs4自己写爬虫。
原因如下:
1、学习一个新东西,首先是先用起来,然后在使用中发现问题,再究其原理,才能深入学习;
2、scrapy不管是否支持python3,如果想学习爬虫原理,都无碍的,因为学习思想最重要;
3、scrapy封装了爬虫的一些核心组件,而且上手简单,如果想以后自己写爬虫框架,它的实现思路还是很值得借鉴的;
等用scrapy写出几个爬虫抓几个网站后,这基本算是入门了。
要抓的网站非常多时,就会遇到几个问题:
1、一些网站开始防抓,IP被封?
随机User-Agent,随机代理,开始用到scrapy的插件。
2、网页太多,抓的太慢,scrapy默认是不支持分布式的,怎么实现分布式?
一些分布式的插件就会用起来,例如scrapy-redis。
3、网页越来越多,会不会抓重复?
哦,原来不会重复抓。看一看scrapy源码,基于url指纹过滤重复的。啊,过滤规则自己可以替换,不错!
4、网站如何深度抓取,如何广度抓取?
看一看scrapy源码,哦,原来通过实现了栈和队列改变任务的入队顺序,结合配置来控制。
如果你有足够的兴趣和耐心,有没有发现,从开始使用它,慢慢地你开始关注scrapy的是如何实现了,继续深入源码,你就会发现它的实现思想很巧妙,代码结构低耦合,插件威力巨大!
相信看完本篇文章后,更多的小伙伴可以坚定的选择python爬虫中的scrapy框架,在使用上面非常适合python新手。
本文链接:http://so.lmcjl.com/news/7874/