基于scrapy框架下网络爬虫的开发与实现
2021-09-24鲁鑫肖小玲
鲁鑫 肖小玲
摘要:本文先简述scrapy框架的平台架构,然后介绍了网络爬虫的流程,并说明了爬虫程序的设计与实现的基本流程。基于这些技术,本文设计实现了基于Scrapy框架下的网络爬虫。本文给出了网络爬虫的主要流程,以及主要的模块,包括item模块、spider模块以及scheduler模块。并且,本文对网络爬虫的具体实现进行了介绍,包括UA的实现、页面抓取的实现、数据提取的实现等。最后,本设计在Linux操作系统下进行了相关测试。对网络爬虫的功能和性能进行了测试,爬虫的运行总体来说较为顺利,且对电脑性能的要求不高。该爬虫基本完成了本文的研究目的。通过本次的研究,对网络爬虫的设计与实现有了更深的理解。也对scrapy框架有了更加深刻的认识。
关键词:网络爬虫;Scrapy框架;数据提取;页面抓取
中图分类号:TP311 文献标识码:A
文章編号:1009-3044(2021)23-0134-03
1 前言
在如今信息高速发展的万维网上,像百度、谷歌这些传统引擎对信息的搜索全都是在对关键字处理的方式的基础上进行的,并不能精确的定位用户的需求,这种对信息的搜索处理方式有着天然的劣势和局限。首先,它不能很好地定位用户所需的精确数据,其次,它所返回的数据是非常繁多冗杂的,其中包含大量用户所不关心的数据,这对用户在进行数据查看是非常沉重的。
为了对万维网上的数据进行特定的搜索,各种搜索引擎也是层出不穷,搜索引擎在数据搜集中站着越来越重要的地位,但正是因为信息的高速发展,用户对信息的搜索也是越来越严苛,如今的搜索引擎也越来越难以满足用户的需求[1]。
万维网其实就是一个巨大信息和数据的集合,只是这种集合并没有规律可言。但如果我们将这种集合通过特定的技术和手段进行有效的检索,在拥有巨大用户的情况下,这种检索将会具有不可衡量的价值和作用。而传统搜索引擎对数据的处理并不能完全满足用户的需求。用户在不同的地点和不同的时间,往往有着不一样的数据需求。传统引擎所返回的数据包含大量用户完全不关心的内容,也并不能对用户的需求进行精确的定位。一个灵活高效又能完全符合用户需求的爬虫设计就越来越具有现实意义。
2 发展现状及存在问题
此课题主要的目的是利用scrapy_redis 框架类建立分布式的断点续爬的网络爬虫程序,同时要保证爬取数据时代码的稳定性和高效性,又能完全满足用户对数据精确抓取的需求[2]。
爬虫的基本原理是运用xpath 进行对url 进行定位,并用文本定位工具对用户所需求的数据进行精确抓取。为了使网络爬虫的效率更高,在设计爬虫程序时就必须利用redis 数据库进行服务器之间的连接,实现多台服务器共同爬取数据的功能。通过对IP池和UA的设置,避免了我们爬虫被对方服务器识别为恶意程序的情况。在以上技术理论的支持下,我们所设计的爬虫程序要既能实现高效抓取数据、又能根据用户的需求对数据进行精确定位的功能[3]。
其实,传统搜索引擎的缺点早就20世纪已经被发现了,对于爬虫的研究也早已开始了。随着年代的发展,爬虫的技术也越来越多,越来越完善稳定。万维网上的数据是以完全虚拟的方式存在于我们的认知中,由于传统搜索引擎的存在,我们才能将万维网上的数据以实体的形式呈现在我们的眼前,变成一个我们可知、可感的真实存在体。但是,不能对数据进行特定搜索和特定抓取的传统搜索引擎,只能以web1.0的形式存在。
未来的发展中,万维网中的数据抓取、精确定位和特定筛选,是会占据主流地位的。这种对数据的筛选会越来越满足用户的需求。利用scrapy_redis 框架所设计的爬虫程序正好定位了用户的精确需求,日后,也会越来越盛行。如今网络上的各种数据筛选和文本定位及分析工具会为未来的爬虫奠定基调。这种基调的奠定,可能会促使传统搜索引擎的改革,而这种改革,将会成为一次重大意义的蜕变,对用户来说,也是具有促进意义的。本课题主要研究scrapy分布式爬虫框架的搭建和 在scrapy框架下设计与实现网络爬虫,实现在终端控制、后台自动运行的爬虫程序[4]。3 爬虫发展需求分析
网络爬虫其实就是一个专门从互联网上下载网页并分析网页的自动化程序。它将下载的网页内容和采集到的数据储存在数据库中。伴随着起始url的抓取又不断从抓取到的网页中抽取新的url 放入到待抓取url 队列中,直到爬虫程序所抓取的数去能够满足用户的精确需求,这是搜索程序的重要组成部分[6]。
(1)网页下载功能
1)下载任何能满足http协议和https协议的网页。
2)HTTP响应中构造GET请求。
3)HTTP响应请求分析。
(2)网页分析功能
1)网页标题提取。
2)网页关键字提取。
3)网页摘要提取。
4)网页链接并统计数量提取。
5)将新url 加入待爬取URL队列。
(3)内存池功能
1)固定大小内存分配。
2)内存对象回收。
3)内存对象释放。
4)内存池销毁。
(4)保存功能
1)能够正确将网页内容以及数据保存到数据库中。
2)将程序运行时的异常写入日志文件。
4 通用爬虫和聚焦爬虫
结合使用场景的不同,网络爬虫有通用爬虫与聚焦爬虫两种。
百度、谷歌、雅虎等传统的大型搜索引擎的基本原理就是通用网络爬虫的基本原理,将万维网上的网页采集到本地时它的主要目的,这样可以创造一个互联网网页内容的镜像备份。
通用网络爬虫从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时。