基于Scrapy 的农业网络空间信息动态监测算法
2020-05-21陈黎,马健
陈 黎,马 健
1.重庆财经职业学院应用技术学院,重庆 402160
2.重庆大学,重庆 400044
随着经济和科技的不断发展,当前农业研究热点是农业网络空间数据的开发和利用[1]。农业网络空间数据来源于农业生产、农业流通和农业经济等多个方面。农业网络空间数据具有来源广泛、结构复杂等特点,潜在应用价值较大。在当前农业发展和互联网技术相结合的背景下,农业网络空间信息在农业发展过程中起到较为重要的作用。但由于农业网络空间数据格式复杂多样,且在海量网络数据中难以及时挖掘并动态监测农业网络空间信息,不利于通过农业网络空间信息分析农业空间数据。因此应采用行之有效的动态监测算法监测和分析农业网络空间信息[2]。
经过实际分析发现,当前可通过构建检测系统实时动态监测农业网络空间信息,构建动态监测系统过程中较为重要的是从海量网络信息中采集农业网络空间信息[3]。采集信息方法的选取至关重要,网络爬虫是一种计算机应用程序,通过该种程序可实现网页自动浏览和网页数据抓取[4]。Scrapy是一种爬虫应用框架程序,该程序是通过Python 编写的,具有使用便捷和结构简单的特点。当用户需要某种网络信息时,可采用Scrapy 下载所需信息,并及时将所需信息保存下来,储存成用户所需的存储格式[5]。当前数据挖掘领域中广泛应用的Scrapy,是数据挖掘领域重要的应用工具。
本文主要是在Scrapy 框架的基础上,设计一种农业网络空间信息动态监测信息系统,该系统中较为重要的是信息采集模块和动态监测模块。信息采集模块中基于Scrapy 框架设计爬虫[6],通过设计爬虫爬取网络中农业网络空间数据信息,经过处理和分析后,通过动态监测系统实施监测农业网络空间数据[7]。
1 农业网络空间信息动态监测算法
1.1 动态监测系统设计
为动态监测农业网络空间信息,需采用合理的动态监测算法,本文构建的农业网络空间信息动态监测系统中核心部分是总体设计,设计过程中需充分考虑当前和未来的技术发展状况[8],同时应充分分析系统内部各个模块间相互联系程度。设计系统时应充分满足可靠性、可拓展性和适用性等原则,基于上述原则构建的农业网络空间信息动态监测系统结构如图1 所示。
图1 系统结构图Fig.1 System structure diagram
从图1 中可清晰明了的观察到系统的层次,该系统主要由信息采集和处理模块、农业网络空间信息服务和分析等四个模块构成[9]。每个层模块之间相互联系,各司其职。该农业网络空间信息动态监测系统的主要用户是政府部门、普通农户和科研人员等。下面对四个模块进行详细分析。
1.1.1 信息采集模块 系统信息输入端是信息采集模块,信息采集的主要对象是网络中各种信息源和Scrapy 网络爬虫,信息源包括微博、论坛、贴吧等。信息采集模块负责从互联网中获取农业网络空间信息,将获取的农业网络空间信息存储到数据库中。
1.1.2 农业网络空间信息处理模块 该模块主要功能是处理农业网络空间信息,信息采集模块采用Scrapy 网络爬虫获取所需农业网络空间的信息,然后将获取的信息存储到既定数据库中。通过一定方法净化信息所在网页,提取数据库中信息的特征,获取所需信息,农业网络空间信息分析模块的输入是处理结果[10]。
1.1.3 农业网络空间信息分析模块 该模块的主要功能是分析农业网络空间信息。主要是聚集相同的农业网络空间信息,实现对农业网络空间信息的分类。同时从中提取信息特征,分析相同农业网络空间信息发展趋势。系统核心业务层是农业网络空间信息分析层,通过该模块聚类和提取信息特征,实现对农业网络空间信息的充分挖掘。通过挖掘信息构造话题列表,同时设置关键字信息,通过关键字从话题列表中搜索所需农业网络空间信息[11],动态监测农业网络空间信息。
1.1.4 农业网络空间信息服务模块 系统和用户的交互界面是农业网络空间信息服务模块。该层主要功能是向用户展示分析结果,分析结果包含农业网络空间信息动态监测的各个方面,例如农业网络空间信息发展趋势、信息检索和信息预警等方面。
经过上述分析发现,动态监测农业网络空间信息时,较为重要的是采集农业网络空间信息和动态监测农业网络空间信息部分,应对上述两部分进行详细分析。
1.2 信息采集模块
农业网络空间信息从当前冗杂网络数据中采集所需信息时,其过程较为繁杂且耗时较长。因此在信息采集模块应先构建Scrapy 框架,依照构建的Scrapy 框架建立对网页的请求响应,通过爬虫设计实现对农业网络空间信息的采集[7]。
1.2.1 Scrapy 框架 网络爬虫本质上是一种程序或者是脚本,该程序或者是脚本主要采用既定规则抓取互联网信息,通过该种程度能有效解决网络连接和爬取策略等问题。为提升开发者开发爬虫的速度,需设计Scrapy 框架,框架图如图2 所示。
图2 Scrapy 爬虫框架Fig.2 Scrapy crawler framework
从框架图中可以看出,该Scrapy 框架主要包括五个模块。
(1)引擎 该模块主要负责爬虫、下载器、队列和调度器之间数据传递和信息通讯。
(2)调度器 该模块主要负责接收引擎传输的请求,依照一定规则将请求放入队列当中。
(3)下载器 主要负责下载调度器发送的所有请求,将下载器获取的相应传输到引擎中,由引擎传输到爬虫中进行处理。
(4)爬虫 主要负责处理所有的响应,从响应中提取获取Project(项目)字段所需的数据,降需跟进的URL 传输到引擎中,再次进入到调度器中。
(5)队列 负责处理爬虫中获取的Project,主要处理手段包括区中、持久化存储等。
经过上述分析得到Scrapy 的工作步骤为:先启动引擎,同时控制爬虫运行,依照编写的爬虫策略控制引擎向调度器发送请求。调度器将请求加入队列后,依照队列顺序向下载器中发送请求。下载器接收到请求后,下载所需农业网络空间信息,将其保存到本地。此时下载信息等同于响应,将响应传输到爬虫中经过爬虫处理后形成Project,通过队列保存或者输出Project。
1.2.2 爬虫设计
(1)定义爬取对象 当前计算机网络中包含大量网络信息,如果想要通过爬虫从网络中快速抓取所需信息,需采用爬虫Project 定义所需爬取对象,本文采用MaizeItem 定义爬取对象。
(2)网页爬取 网络中网页本质上是一种结构体,该结构体中包含网页全部内容,因此可从结构体路径中查询农业网络空间信息。右键选择Chrome 浏览器中的检查选项,浏览网页结构体,从网络结构体中获取农业网络空间信息。同时获取农业网络空间信息在结构体中的详细内容和在结构体中路径,其中详细内容包括指向链接和文字信息等内容。依照结构体中路径采用xpath()定位到农业网络空间信息,在农业网络空间信息爬虫中,将程序写成下列形式:a.attribute=response.xpath(‘//ul/li/a[include(@title,“农业网络空间信息”)]’)。
该段代码主要是为查询包含农业网络空间信息的条目,且该条目信息处于“ul/li/a”路径中。从该条目中提取文章链接、文章标题和文章日期,将提取内容放入到MaiaeItem 中。同时将获取的文章链接存储为attributeUrl 形式,把存储后文章链接放入调度器中。由于文章列表页和文章内容页具有不同的解析内容,因此应使用scrapy.Request(attributeUrl,Retracement=self.parseEffective Agricultural Network Spatial Information)。将指定的解析规则设置为parseEffective Agricultural Network Spatial Information(),在parseEffective Agricultural Network Spatial Information 中编写解析规则。随后抓取文章内容,抓取过程中采用xpath,在抓取文章内容后存储文章,存储位置为MaizeItem。通过上述过程获取完整的Project 条目,该条目中应包含文章日期、标题、内容和链接,通过Pipeline 处理完整的Project 条目。使用xpath()定位文章列表页和文章内容页的下一页链接[12]。假设存在下一页链接,则需在调度器中采用上述过程继续获取下一页链接,直至不存在下一页链接为止。
(3)数据提取 为形成按照关键词搜索的农业网络空间信息,需处理爬取的MaiizeItem 对象,处理位置为Pipeline。形式如下所示“......某地区的玉米作物产量为xx,玉米作物产量结构和主要种植区域是xx 区,地区的大豆作物产量是yy,大豆作物产量结构和主要种植区域是yy 区....”。该农业网络空间信息较为分散,用户难以加以利用,需采集网络中农业网络空间数据,形成方便利用的农业网络空间数据。
经过调查分析发现,农业网络空间数据包含在MaiizeItem 数据中,其中部分农业网络空间信息是不断变动的,少部分变动幅度较小或基本保持稳定。但其中地区名称是每日重复的,因此提取所需数据时,应提取地区名称和农业网络空间数据,构建地区名称和农业网络空间信息之间的关系。先通过地区名称构建地区名称列表,使用正则表达式查找和提取地区名称列表中某地区的农业网络空间信息。正则化表达式采用“/d”表示数字,匹配规则为“地区名称+‘.* ?(/d+./d)’”,通过匹配规则可查找当地的农业网络空间信息。由于农业网络空间信息种类较多,应依照实际需求划分成多种类型,通过不同的正则化规则获取相应的农业网络空间信息[13]。采用上述方法提取海量网络数据中的农业网络空间信息。
1.3 农业网络空间信息动态监测
农业网络空间信息动态监测的主要目的,是识别和提前预警农业网络空间信息。整个动态监测过程中需建立词库,该词库中包含相关领域的农业网络空间信息,依照获取的农业网络空间信息关键词,匹配农业网络空间信息,识别农业网络空间信息,发出预警信息。针对农业网络空间信息特点,本文采用WM 算法动态监测农业网络空间数据信息。动态监测流程如图3 所示。
图3 农业网络空间信息动态监测流程图Fig.3 Flow chart of dynamic monitoring of spatial information of agricultural network
从图3 中可以看出,WM 算法主要是处理同音字、拆分字和干扰符号,实现对所需农业网络空间信息的精准匹配。同时应处理干扰符号,处理过程中采用表达式和通配符。WM 算法实现过程较为简单,该算法计算的主要过程是处理构建表,构建表包括前缀表、移动表和哈希表。其中文本之中存在的是移动表,对于某一农业网络空间信息出现时,移动表会移动相应长度。前缀表主要是和文本中第一个字符相匹配,处理匹配后文本,处理过程中需先计算查找的B字符,计算散列值Bh,判断SHIFH[Bh],假设数值大于零,应继续查找B字符,反之计算文本对应前缀散列值Bp,当HASH[Ch]和HASH[Ch+1]中存在p值时,假设PREFIX[p]=Bp,说明文本没发生改变,依照关键字进行匹配[14]。
2 结果与分析
为研究本文算法动态监测农业网络空间信息效果,需进行实际分析。本文主要从农业种植作物分布动态监测结果和农业植被分布情况两个角度出发,分析本文算法动态监测效果。
2.1 农业种植作物分布状况分析
为研究本文算法动态监测农业种植作物分布情况,主要从农业种植作物分布效果和部分地区农业种植作物产量,在2009 年到2018 年农业种植作物产量变化情况这两个角度进行分析。首先分析2018 年全国农业种植作物分布效果,效果图如图4 所示。农业作物产量分布情况如表1 所示。
表1 农业种植作物产量分布情况/10,000 hm2Table 1 Distribution of crop yields under agricultural cultivation
从图中可以看出,我国南部地区主要种植作物为水稻和小麦,部分地区兼作水稻和旱粮;我国西北地区种植作物较少,西北部地区中部分地区种植作物,重要种植作物为小麦和旱粮;我国东北地区主要种植作物为旱粮,少部分地区种植小麦。同时从表中可以看出,地区农业种植作物随着年份的增加,种植作物产量也在不断增加,且增加幅度较小。对比本文算法动态监测效果和实际地区农业作物产量变化情况发现,两者之间相符程度较高,说明本文动态监测方法精准度较好。
图4 2018 年农业种植作物分布效果图Fig.4 Effect map of agricultural planting crop distribution in 2018
图5 广州市植被生态质量分布情况Fig.5 Distribution of vegetation ecological quality in Guangzhou
2.2 植被分布
动态监测农业网络空间信息的过程中,应监测农业网络空间中植被分布状况。植被是在农业生态系统中具有较为重要的作用,能够保障自然环境同时改善植物和人类生存空间,因此动态监测农业网络空间信息时应监测植被动态变化情况。通过本文动态监测算法分析2018 年广州市植被生态质量分布情况,获取分布结果如图5 所示。同时详细分析采用本文动态监测算法获取2009 年-2018 年广州植被生态质量相关指数动态变化情况。监测结果如表2 所示。
从图5 中可以看出,2018 年广州市大部分地区植被生态质量相关指数较好,即2018 年广州市植被鞥太质量较好。从表2 中可以看出,广州市植被相关指数随着时间变化而不断发生变化,2009年-2014 年随着广州市城市化进程不断加剧,广州市斑块密度和形状指数在不断增加,说明此时广州市植被遭受到大范围破坏,导致单位面积斑块数量大幅度增加,城市植被覆盖率较差。随着时间不断向前推进,2015 年以后广州市植被覆盖率逐渐提升。上述分析结果与实际结果较为相符,说明本文算法动态监测效果较好。
表2 植被动态监测结果Table 2 Results of vegetation dynamic monitoring
3 结论
本文研究的基于Scrapy 的农业网络空间信息动态监测算法,在当前网络中存在大量农业网络空间数据信息的Scrapy 框架基础上,构建包含信息采集模块、信息处理模块、信息分析模块和信息服务模块这四部分的农业网络空间信息动态监测系统。该系统主要是挖掘和分析采集的农业网络空间信息,达到识别和追踪农业网络空间信息的目的,可视化展示分析结果。系统中信息采集模块采用Scrapy 框架设计网络爬虫,通过设计的网络爬虫,爬取网络汇总农业网络空间信息。信息处理模块主要是处理农业网络空间信息,动态监测和追踪农业网络空间信息。经过实验分析发现,本文动态监测农业网络空间数据算法适合应用到实际中,应用价值高。