对土地流转信息进行网络爬虫的实现与优化

2021-06-03 14:35
科技创新与应用 2021年15期
关键词:后羿爬虫采集器

袁 望

(暨南大学,广东 深圳 518053)

1 概述

1.1 研究背景及意义

网络爬虫(Web Cracker)是一种能够实现对网页内容及相关信息进行自动化抓取的脚本或程序,该概念自提出至现在,跟随网络环境、数据环境、技术环境的变化,其内涵、广度都在不断丰富与发展,目前爬虫技术的主流分支包括通用网络爬虫、聚焦网络爬虫、增量式网络爬虫和深层网络爬虫[1];大量的动态网页与数据库的使用,促进了深层网络爬虫技术的研究,即对“存储在网络数据库中,不能通过静态链接获取、不能被普通搜索引擎发现,通常需要通过表单与一系列动态网页技术访问的资源集合”这一类数据进行爬取[2]。

早期的深层网络爬虫技术包括引入JavaScript 引擎执行相关交互代码,并接受返回的所有页面URL[3];或是使用标准浏览器API,自动构建模拟浏览器以代替http客户端,从而进行脚本处理与页面重定向[4]两类,目前很多网络爬虫的算法设计思路都参考了以上部分思想。

传统的网络爬虫往往使用特定的编程语言,由需求者独立编写脚本程序实现,这种方式提高了网络爬虫的技术门槛,并且对新的技术环境往往缺乏敏感性与柔性。因此,本文介绍一种新的基于应用程序“后羿采集器”的网络爬虫,对“土流网”的土地流转信息数据库进行爬取,通过关键词检索、复合条件筛选对特定数据进行动态查询与爬取,验证“后羿采集器”在深层网络中采集数据的高效能力。

1.2 主要使用软件与技术

1.2.1 网络爬虫

网络爬虫技术泛指一切能够实现对网页的内容进行自动抓取的技术,也是本文使用软件获取网站数据的基础技术。

1.2.2 XPath

XPath 是在XML 文档中查找信息元素的定位符语言,XPath 可以根据网页结构对网页某一部分的元素进行定位,在目前多采用固定框架进行布局的网站中,使用XPath 定位特定信息元素有较好的效果。

1.2.3 正则表达式

正则表达式即使用一定的特定字符组合,表示相关的“规则字符串”,并以此对目标字符串进行过滤、替换等操作;在数据爬虫的应用领域,正则表达式在提取、匹配固定格式信息和构建DOM 的方面有良好的效果[5]。当前,学界的一种主流思想认为:正则表达式、XPath 路径语言、Beautiful Soup 并称为网络爬虫中对数据的3 种筛选技术[6]。

1.2.4 后羿采集器

后羿采集器是由商业技术团队开发的一款数据采集软件,在模拟浏览器的基础上,支持智能学习采集流程与图式采集流程,通过可视化、模块化的流程图与封装的功能模块,屏蔽了网络爬虫技术在底层上的实现细节,降低了用户进行网络爬虫的技术门槛,同时允许用户通过编辑正则表达式、XPath 等方式,制定复杂、个性化数据采集方案,保留了一定程度的可拓展性与高级应用能力。

1.3 研究流程

步骤(1):安装并配置“后羿采集器”软件。

步骤(2):设计目标任务:选择“土流网”为数据来源站点,根据给定的“农业用地”为检索条件,采集相关土地的流转交易信息。

步骤(3):在“流程图”模式下,设计合理的流程图,并进行首轮网络爬虫测试,分析数据测试结果。

步骤(4):根据首轮数据的分析结果,调整流程图细节,并反复测试直至问题基本解决。

步骤(5):总结相关经验,得出研究结论。

2 方法设计与实现

2.1 概念设计

由于该软件的“流程图模式”是基于采集流程图进行自动化的识别、点击、交互、采集,因此概念的设计即对本次网络爬虫任务的自然语言描述:

首先,本次任务应该完成基本的web 页面交互——访问URL 资源,提交搜索关键词与表单,提取页面相关信息,智能完成页码检测与翻页;其次,软件在爬虫过程中应当拥有一定的程序处理流程,对于特定事件的判断、循环、跳转能够按照编写者设定的规则进行自行处理;最后,需要保证爬取到的数据的完整性与真实性,尽量避免数据值缺失、格式混乱等问题,且最终能以二维表等规范形式组织与展示数据。

2.2 基于流程图模式的实现

2.2.1 基本流程说明与流程图

根据概念设计中的要求,流程图最终设计为图1 所示,主要分为打开网页、模拟搜索、提取数据循环、自动分页循环、特定数据判断五大部分。其中模拟搜索负责通过动态交互的方式请求后台返回相关数据库与URL;两类循环(提取数据循环、自动分页循环)框架由软件自行形成,是完成自动遍历页面、自动采集等动作的主要部分;特定数据判断则是为了解决后续出现的数据缺失问题所设置的逻辑分支结构。

图1 网络爬虫流程图

2.2.2 主要功能需求与解决方案

(1)建立统一动作的流程图

当模拟浏览器首次访问该网站页面时,网站的一段JavaScript 代码会主动触发运行,通过读取cookie 是否为第一次访问该网站,对首次访问网站的浏览器弹出“安全提示”窗口,且需要用户点击确定后才能继续与页面交互。

该动作影响了统一流程图的建立,因为弹窗只出现一次,因此不能添加“点击页面元素”步骤来响应弹窗,而是应该从cookie 记录方面入手解决。

图2 弹窗HTML+JavaScript 示意

因此,在建立流程图前,使用“后羿采集器”提供的“预登录”功能,完成第一次访问动作,留下访问记录的cookie,以防弹窗干扰自动采集流程。

(2)自动检索与提取列表

在详情页中,发现详情页列表采用<div>标签+float属性的布局方式,而非<ul>标签+<li>标签进行嵌套的列表式布局,导致若使用采集器的自动识别列表模式,将得到错误的键——值关系——所有div 标签内的内容都会作为数据被采集,而其中占一半数量的div 内的文字实际应该为属性名,而不是具体数值。(如图3)

图3 数据布局方式

因此,此处应使用手动编辑XPath 的方式进行数据定位,根据页面结构特点,修改后的XPath 示例如图4。

图4 用于标准化信息内容与格式的XPath

相比修改前,修改后的数据具有二维表的形态,不仅保证了数据的准确性与完整性,更有利于后续数据的归类与使用。(如图5)

图5 数据格式对比,左图为修改前,右图为修改后

2.3 数据提取中存在的问题与改进方案

2.3.1 行政区级字段处理

为了方便查找该土地所在的省市信息,在原有数据“地点”的基础上,通过编写正则表达式,对地点信息中的省级行政区进行提取划分,形成新字段“省份”。

通过观察,该网站前端显示土地所在地点信息时,使用“/”字符分割省级区划与其他行政区划,因此使用正则替换,提取土地名称中第一个“/”字符前的汉字,没有“/”则代表地点信息仅包含省级信息,直接提取所有汉字。

详细实现的正则替换方式如下:

查找内容:“([u4e00-u9fa5]+)([S]*)”;替换为:“$1”。

2.3.2 对缺失关键字段的深入采集

在首轮爬虫结果中,发现土地的“带看费”数据缺失较为严重,通过浏览器追踪其详情页,发现网页中未显示相关信息,查看其JavaScript 动态处理,发现因未知原因,其后台对于部分详情页面不会返回“带看费”数据信息,此时前端的js 代码自动对缺失数据设置隐藏效果(display:none),让网络爬虫无法提取到任何字段。

解决该问题的方式是,在流程图中增加一个判断模块,并配合手动编写XPath,判断页面是否存在含有“带看费”字符的标签,如果没有,则说明当前页面无法提取到“带看费”数值,需要进一步通过点击“详情订购页面”URL,在订单结算页面获取带看费价格并返回,详细实现如图6。

图6 进一步挖掘信息的XPath 定位

2.3.3 有效数据的单位处理

提取到的“带看费”只有数值,没有价格单位,且考虑到同样身为价格的“土地价格”单位为“万元/平方米”,因此数据表中“带看费”的价格需要明确,以防止单位误用。

因此,编写正则表达式进行正则替换:

查找内容:“([+-]?d+(.d+)?)”;替换为:“$1 元”。

该表达式的主要作用有:a.匹配内容为有效数字(包括带小数位的数字)的字符串(即排除空值);b.如果为有效数字,则在末尾添加字符“元”。

3 数据采集结果分析

如表1 所示,第一次网络爬虫目标设定为960 条数据,数据采集结果中出现了较高比例的“带看费”属性值缺失;对流程进行修正与优化后开始第二次网络爬虫,共计1920 条目标数据。

表1 两次数据采集结果对比

两次采集中,各类数据占总体的比例大致相当,“全空数据”的存在说明“后羿采集器”软件在实际运行中受到主机环境、网络环境的影响,有大约5%的出错、失去响应概率,但不影响整体采集流程;“带看费缺失”说明该网站服务器提供的数据本身存在一定缺陷,即使对流程进行了优化,仍存在数据的缺失,导致了40%-50%左右的土地信息缺乏相应属性值。

第二次采集中,经过修正后的流程,补充了9%左右的“带看费”属性值,说明优化后的方案对提高数据完整性起到了一定的作用。

4 结束语

“后羿采集器”的智能采集与识别功能是对一系列优秀算法思想(例如启发式算法[7]、网页树状结构映射[8]、基于自动生成XPath 的定位[9]等)的封装、应用与拓展,对初学者而言,使用集成功能的软件能够迅速完成基本的网络爬虫任务,是进行网络爬虫工作的理想选择之一。然而,一来目前网络爬虫的技术栈仍然处于持续更新状态,对新技术的支持与兼容往往取决于集成功能软件开发者的更新进度,而非使用者的意愿;二来“自动翻页”“智能采集”等自动生成算法的最终质量也依赖于具体算法的迭代与优化。因此,网络爬虫需要根据实际需求,选择合适的工具,不能盲目迷信单一技术或手段。

使用“后羿采集器”进行的网络爬虫设计与实现,能够达到数据采集的基本需求,采集到的数据除部分缺失“带看费”之外,均包括地址、年限、用途、类型、价格等重要交易信息,仍然保留着较高的信息分析价值,可以为研究土地产权、农村土地流转等土地科学问题贡献社会经济数据。

猜你喜欢
后羿爬虫采集器
利用网络爬虫技术验证房地产灰犀牛之说
后羿射日
带U型切口的非线性压电能量采集器的动力学仿真研究
COVID-19大便标本采集器的设计及应用
基于Python的网络爬虫和反爬虫技术研究
相思·中秋
我和后羿过一天
碰撞式宽频振动能量采集器研究进展
目前互联网中的网络爬虫的原理和影响
后羿射日