背景
想要做一个垂直搜索的平台,初始的数据是王道,之后的数据来源希望依赖于“众包”。刚开始想使用Nutch,因为能与solr,lucene兼容。但是Nutch是个通用的爬虫,可能不适合我的需求。我的需求是定向抓取,也不包括链接分析,站点发现等。而且Nutch的源只提供1.6后的版本,体验了之后发现网上现有的许多资料不太适合。于是尝试使用Scrapy这个python写成的爬虫框架。他是一个事件驱动的网络框架,可以针对页面定制自己的爬虫需求,并且扩展和编写比较简单。
安装使用
Scrapy的安装需要关联不少python的类库。建议仔细参考文档的步骤。这里有两份Scrapy安装和Scrapy入门使用的文档,是官网文档的中文翻译。根据第一篇文档,安装好Python环境,Twisted,setuptool等内容后可以正常启动Scrapy。我自己使用的是Scrapy1.4版本,如果使用1.6版本的还需要自己安装libxslt。注意Python版本和各个库的版本兼容问题,只要完全按照文档里的顺序下去,就不会搞错。
我也尝试爬了下自己CSDN博客主页的url内容,使用起来比较简单,而且速度快。虽然是第一次使用python,在扩展爬虫类和添加规则的时候觉得并不困难。关键还是在对目标页面的结构分析,通过XPath的规则提取出需要的内容,以json的格式输出或者存在磁盘上。
这里有一篇简单分析Scrapy架构的文章。
总结
最后提供一篇Scrapy使用者的经验文章,在scrapy性能,缺点,增量爬取,高效存储方面都点到了些。等有更进阶的使用经验之后会再进行分享。