- 文献综述(或调研报告):
网络爬虫,能够由万维网上下载网页,并沿着网页的相关链接在网络上采集资源,是一个功能强大的网页自动抓取程序。随着网络资源的爆炸式膨胀和信息量的飞速增长,传统的通用爬虫技术在索引规模、更新速度和个性化等方面已经不能够满足用户的需求,由此发展出了主题网络爬虫、增量式网络爬虫、深度网络爬虫等技术,而实际应用中常常需要将几种爬虫技术相互结合。如今,在搜索引擎技术以外,网络爬虫技术更多应用于定向信息采集,如何针对特定的用户需求设计定制化爬虫策略成为一个爬虫项目的关键。
通用爬虫技术通常采用深度优先算法或广度优先算法来遍历整个网络。文献[1]采用深度优先算法,并用二叉树描述网站的域名层级结构来实现网站所有URL的遍历。文献[2]应用Scrapy和Django框架构建了一个可视化的web大数据采集系统。
但不同领域、不同背景的用户对于信息检索常常有着不同的需求,通用爬虫的结果包含大量用户不关心的网页。主题爬虫则根据一定的网页分析算法过滤掉与主题无关的链接及其隐含的子链接,保留有用的链接并将其放入等待抓取的URL队列,从而提高爬虫效率。
而文献[3]指出,主题爬虫的常用策略有基于内容评价的爬虫策略和基于网页链接结构的爬虫策略两种。但前者忽略了链接信息的作用,预测链接价值的能力较差;后者忽略了网页与主题的相关性,易造成主题偏移,准确率较低。对此,该文献提出一种方法,在传统的基于内容评价的主题爬虫基础上增加URL分析器,进行对URL的筛选、优先级计算以及待爬行URL的优先级调整,实现了较好的主题爬行效果。
面对同样的主题偏移问题,文献[5]提出了基于主题相关度PageRank算法的改进。文献[6]针对微博平台数据,利用微博Hashtags(主题标签)对爬虫主题进行了指导,实现了一种依据可以主题标签进行自适应主题的爬虫。该爬虫可以对于预先设定的主题词汇进行延展完善,从而提高数据的覆盖率和准确率。文献[7]提出了基于SVM的主题爬虫策略,该算法能够较好区分网页与主题的相关度,提高了主题相关网页的命中率和召回率。
随着互联网近年来的爆炸式发展,互联网中的数据量迅速增加,当数据量极大时,传统的单机爬虫技术已难以处理。
文献[8]提出基于Scrapy技术的分布式爬虫系统设计,设置多个节点对海量数据进行并行获取与处理。该系统可粗略分为分布式模块和爬虫模块,分布式模块采用主从架构模式,爬虫模块采用广度优先遍历结合增量爬取的策略。最终实现一个简单稳定、中小规模、主从架构模式的分布式爬虫系统。
文献[9]同样实现了基于Scrapy框架的分布式爬虫系统。但在文献[8]的基础上,又将Redis和Scrapy结合,对原有Scrapy框架进行了优化。并应用Bloom Filter对Scrapy去重模块进行优化,解决了Redis的高内存问题,使系统具有很好的空间利用率。
当爬虫市场逐渐打开,大量种类不同、质量参差的爬虫涌入市场。大量网络爬虫在网站上爬取信息,会对网站维护产生负担,造成负面影响,网站可能采取一定措施阻止爬虫行为。对此,文献[10]提出基于Scrapy框架的绕过反爬虫的方法,分别为构建IP代理池、构建cookies池、突破登录限制和Selenium处理动态网页。
网络爬虫技术发展至今已趋于成熟,本次的文献研读也为本课题爬虫系统的实现提供了有力的理论与技术支持。本课题将基于Scrapy框架,应用深度优先算法与网页链接结构相结合的爬虫策略实现爬虫,并针对网站反爬虫设计优化策略。
