网站数据抓取软件MetaSeeker的设计理念跟其它网络爬虫有些不同,其中一个比较显著的区别是MetaSeeker将抓取到的某些网页地址URL永久保存,而且可以对其进行一些操作,例如,开放给在线版用户的操作有线索激活和去活,还可以使用周期性抓取指令重建线索。上述设计思路带来的最大负面影响就是消耗过多的CPU计算资源,如果大量抓取网站上的超链接,并生成永久保存的线索,将导致抓取速度下降。本文讲解一些避免性能下降的技巧。
造成速度下降的必要条件是:
- 抓取超链接
- 由超链接生成数据抓取线索永久保存在MetaSeeker服务器上。
两者缺一不可,所以,我们要想办法不要让这两个条件同时满足。
是否需要生成线索
目标网站上有很多超链接需要抓取下来,但是,不一定非要生成线索。例如,信息结构open_source_project(可以在MetaStudio的Schema List工作台上搜索并加载该信息结构)要从目标网站上将所有开源项目的网页地址抓取下来,交给其它软件进行处理,所以,该信息结构并没有为抓取到的超链接生成线索,在Clue Editor工作台上可以看到,除了用于翻页抓取的线索以外,没有为抓取到的超链接生成线索并命名主题名。
当定义信息结构open_source_project时,在Bucket Editor工作台上定义数据抓取规则,虽然抓取网页上的超链接,但是没有给对应的信息属性设置clue和url特性,这样就避免生成线索。
是否翻页抓取
再以信息结构open_source_project为例,需要翻页抓取几万个网页,在Clue Editor工作台上,将用于翻页的线索设置为inthread类型(选中带有三角符号的checkbox),这样就不会为每一页的网址生成线索,除了避免服务器消耗CPU能力生成线索外,还减少DataScraper与服务器的通信,可以大大提高网站数据抓取速度。例如,抓取主题open_source_project时,只与服务器通信一次,连续几天的翻页抓取都没有与服务器通信。
总结
只要不生成不必要的线索,网站数据抓取速度可以显著提高。