■ 陈艺扬 郭子雄 何文
南京工程学院 江苏南京 211167
网络爬虫是一种按照一定匹配规则提取Web页面中特定内容的程序或脚本,通过搜索网页地址的方式实现对用户需求内容查找,将查找并传送结果的过程。爬虫是代替人手工完成爬取工作的自动化程序,能够在抓取过程中进行各种异常处理、错误重试等操作,确保爬取持续高效地运行,相较于传统的浏览器查找模式准确率更高、信息量更大且更符合用户上网需求。
Python不仅提供了功能齐全的类库来帮助完成请求,包括最基础的urllib、trep等HTTP库,还包含丰富的第三方工具包,例如强大的Scrapy、requests。Python能够对网络协议的各个层次进行抽象封装,程序员仅需保证编写程序的逻辑性,而其强大的字节流处理功能具有很快的开发速度,同样为程序开发的高效性提供了重要保障。
用户需求是根据提供的网页URL,搜索提取指定类型的数据、文件链接,并下载保存至数据库;功能性需求有用户功能,包括输入网址、选择数据类型、查看保存的数据;系统功能有获取并解析原代码、提取匹配内容、下载并存储数据;非功能性需求有进度可视化、异常提醒。
图1 系统框架结构
(1)网址管理器
网址管理的方法主要分为三类:①Python内存存储,适合存储少量数据。将网址储存到两个集合中,一个代表待爬集合,一个代表已爬集合,然后在Python中用Set()来实现。Set()本身具有较强的清除功能,能够将系统中的重复值全部清除;②关系数据库存储,适用于对数据进行长期存储。通过建立表,其中用两个字段分别代表网址和爬取状态。③将网址存储到数据库redis当中,适合存储大量数据。
(2)网页解析器
网页解析器是对网页中的内容和数据进行解剖与分析。在Python基础上的网页解析器主要分为两种:一种是采用正则表达式将整个网页文档看作字符串,使用模糊匹配的方式将有价值的数据提取出来。另一种是根据HTML网页建立一个DOM树,通过树的形式对各个节点进行搜索遍历,DOM树形结构根据上下级关系,可以很容易地定位各个元素所在的位置。
(3)网页下载器
网页下载器是整个系统的核心模块,网页中展示的内容通常为HTML格式。现阶段在Python中支持的网页下载工具有两类: ①Python官方支持的基础模块中的urllib包;②requests第三方工具包,它在功能方面具有十分显著的优势。
设计思想:系统主要采用模块化的设计方式,各个功能具有自己独立的建设模块,这为后续代码的维护提供了极大的便利,可以使代码的作用得到充分发挥。对于整个系统来说,需要将各个模块进行编制以后来实现整体功能。
本系统利用Python标准库和第三方工具包构建了一个方便数据采集者使用的可配置自动化信息采集系统。在本文中,并未对系统前端和数据库表格进行具体设计,这些问题还需进一步分析规划。随着科学技术的不断发展,以往传统的搜索引擎已经难以满足当前的信息需求,而爬虫技术的应用有效地克服了传统引擎的弊端,具有较大的应用研究价值,能够通过数据抓取挖掘出更多潜在价值的信息,加上Python语言的功能强大,能为各种软件工具提供支持,应用Python能够更加便捷地采集Web信息。