文章采集规则(文章采集规则的重要性强调一次,scrapy难题之解决)

优采云 发布时间: 2022-03-20 17:03

  文章采集规则(文章采集规则的重要性强调一次,scrapy难题之解决)

  文章采集规则是我编写的,并且是开源版本,更新到14.0版本。我认为,作为一个爬虫,最重要的是采集,而不是规则设计。因为规则设计的再好,爬过去看起来很美,实际上就是卡成一坨(甚至是系统bug)。另外,我认为很多爬虫采用“广告插入模拟用户访问工具”来爬取网页,而不是基于数据库的sqlalchemy。另外,我认为目前很多爬虫在采集数据的时候都有点傻,他们不知道有啥可以采集的数据,还傻傻的去统计有什么数据,于是多次采集数据,然后扔进去。这是不可取的。

  爬虫目前几乎都是基于数据库的,我试着总结下本人爬虫一年来遇到的难题以及一些实现的经验,如有错误,烦请指正。我使用的框架是scrapy,在此之前,scrapy框架已经非常好用,在scrapy基础上可以很好的玩出很多花样,这里先讲下难题。一:scrapy难题之规则设计(规则的重要性强调一次)首先,规则对于爬虫来说,规则设计关系到爬虫是否能够顺利执行以及爬取的结果是否可靠,如果爬虫采用规则来编写爬虫,同时编写规则(rules)之前要先把整个网页变成最终的可爬取页面,这个工作我认为基本是不会让程序员去做的,整个网页要完成采集,还是需要程序员去完成的,对于规则的编写,这个就牵扯到需要采集某个链接上的第几页,几行代码也只能得到一个返回值,更换页数或者条件都会导致上一次爬取得到的页面链接出错,所以一般而言,使用scrapy采集网页时,必须有规则,上面也是例子。

  scrapy难题之解决爬虫规则设计我觉得规则设计主要分为两种情况:全链接规则,动态规则(需要定义downloadconfig来决定post数量或者key数量)。例如我们可以通过downloadconfig决定post多少链接,然后程序员根据post来分配链接到全链接,每次爬取多少个页面,我认为这个是规则的关键。

  而规则通常都是python来实现的,会用到解释器,比如tornado等。所以有时我会使用类似于python的multiprocessing模块来提高爬虫效率,同时比解释器更方便调用。下面讲下scrapy难题之规则实现代码(最好在scrapy/items.py文件中实现)具体流程如下:1.定义downloadconfig2.定义规则的名称,可以用动态规则名称。

  3.定义采集数据的target,也就是filter,规则只会选择一个domain,如下图我定义的为4.定义filter的key(有5种类型(multiprocessing),正则表达式(re),字符串(split),json(outofjson())),规则将会被选择的链接通过key传递给downloadconfig,程序员在调用downloadconfig的时候会带入一个规则即multipro。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线