基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现

上传人:ji****81 文档编号:215422112 上传时间:2021-11-25 格式:DOCX 页数:12 大小:35.25KB
返回 下载 相关 举报
基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现_第1页
第1页 / 共12页
基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现_第2页
第2页 / 共12页
基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现_第3页
第3页 / 共12页
基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现_第4页
第4页 / 共12页
基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现_第5页
第5页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现》由会员分享,可在线阅读,更多相关《基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现(12页珍藏版)》请在金锄头文库上搜索。

1、 基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究与实现 刘登英 龚力波 李雯 黄晓辉摘要农村信息化是发展现代农业的重要条件,农业信息对农业生产生活具有重要的指导作用,为避免云南农村信息化多头建设、重复建设所引起的资源浪费,开展了云南农村科技服务平台建设,实现了云南农业科技信息的整体运作与资源整合,为相关涉农政府部门、科研院所、企业农户提供信息技术指导。关键词Scrapy爬虫框架;农村科技服务平台;信息采集S-058A0517-6611(2018)35-0191-04党的十九大报告明确提出实施乡村振兴战略,要用现代科学技术服务农业,用现代生产方式改造农业,提高农业良种化、机械化

2、、科技化、信息化、标准化水平。云南贫困面广、贫困度深,少数民族众多,农村信息化发展滞后,社会经济欠发达,不利于民族团结和边疆稳定。云南农村科技服务平台针对云南农村信息化各自为阵、条块分割的建设现状,加强信息资源整合,分析挖掘现有数据资源,集成新闻资讯、农业科技、市场供销、政策法规、招商招聘、天气变化、农业企业等信息,开发特色鲜明、实用性强的全产业链农业信息,构建和完善云南农村信息化技术服务体系,在代表性地区和企业开展示范应用,积极为云南农业现代化、乡村经济振兴提供信息技术服务。1基于Scrapy爬虫框架的云南农村科技服务平台信息采集系统的研究信息采集系统采用网络爬虫技术,爬虫技术是捜索引擎抓取

3、系统的重要组成部分。爬虫的作用就是不断地去采集网页的源代码,按照一定的规则,自动地抓取互联网信息1。通用的爬虫框架基本上包括了一个爬虫系统所需要的所有模块。任何一个爬虫系统的设计图,都有一个环路,这个环代表着爬虫大致的工作流程:根据url将对应的网页下载下来,然后提取出网页中包含的url,再根据这些新的url下载对应的网页,周而复始。爬虫系统的子模块都位于这个环路中,并完成某项特定的功能。目前网络爬虫有很多种实现方式,要从很多框架中选择适用于该项目的爬虫框架,保证信息采集系统性能最优、功能最佳。除了搜索引擎爬虫外,主流的被大众所使用的技术有:基于C+的Larbin;基于Java的Webmagi

4、c、Nutch、Heritrix;基于Python的Scrapy、pyspider;基于Golang的Pholcus; 基于.NET的abot等。经过初步的技术预研和筛选,挑选了3个比较成熟的开源爬虫框架,其中Nutch、Heritrix是Java爬虫框架,Scrapy是Python爬虫框架。1.1基于Java爬虫框架信息采集系统研究1.1.1Nutch。Nutch是一个由Java实现的,开放源代码(opensource)的web搜索引擎2,主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一套工具。优点:Nutch支持分布式抓取、并有Hadoop支持,

5、可以进行多机分布抓取、存储和索引。另外很吸引人的一点在于它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便地进行扩展,正是由于有此框架,使得Nutch的插件开发非常容易,第三方的插件也层出不穷,极大地增强了Nutch的功能和声誉。缺点:Nutch的爬虫定制能力比较弱。Nutch是为搜索引擎设计的爬虫,大多数用户是需要一个做精准数据爬取(精抽取)的爬虫。Nutch运行的一套流程里,有2/3是为了搜索引擎而设计的,对精抽取没有太大的意義。也就是说,用Nutch做数据抽取,会浪费很多时间在不必要的计算上。如果试图通过对Nutch进行二次开发,使它适用于精

6、抽取的业务,基本上就要破坏Nutch的框架。如果不做搜索引擎,尽量不要选择Nutch作为爬虫。1.1.2Heritrix。Heritrix用来获取完整的、精确的、站点内容的深度复制3,包括获取图像以及其他非文本内容,抓取并存储相关的内容,对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的定义要获取的URL4。优点:Heritrix的爬虫定制参数多。缺点:单实例的爬虫,之间不能进行合作。在有限的机器资源的情况下,却要复杂的操作。只有官方支持,仅仅在Linux上进行了测试。每个爬虫是单独进行工作的,没有对更新进行

7、修订。在硬件和系统失败时,恢复能力很差。很少的时间用来优化性能。1.2基于Python爬虫框架信息采集系统研究“Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的,也可以应用在获取API所返回的数据(例如AmazonAssociates Web Services )或者通用的网络爬虫。”以上是官方的说明,更详细地说,Scrapy是一个十分健壮、非常好用的从互联网上抓取数据的Web框架5。优点:为抓取单一网站上固定格式的内容而设计的,比如抓取一个小说网站上的小说或

8、者抓取一个电子商务网站上的商品。结构清晰,可以很方便地修改它来实现更复杂的需求。缺点:解析网页比较慢,最好自己写一个网页解析;增量抓取。一个针对多个网站的爬虫很难一次性把所有网页爬取下来,并且网页也处于不断更新的状态中,爬取是一个动态的过程,爬虫支持增量的抓取是很必要的。快速强大:只需编写爬取规则,剩下由Scrapy完成;易扩展:扩展性设计,支持插件,无需改动核心代码;可移植性:基于Linux、Windows、Mac、BSD开发和运行。1.3Java爬虫框架与Python爬虫框架比较选择哪种爬虫主要看定义的“爬虫”干什么用。定向爬虫就是指定某一些网站的数据源作为数据来源,进行页面数据的抓取,抓

9、取整个网站有用的数据以及图片等信息。这里有别于传统的搜索引擎爬虫,传统的搜索引擎爬虫主要是针对整个互联网的数据进行爬取以及数据分析,难度更大,不论是抓取的调度,还是性能要求,又或者是数据的存储都有很大的区别。云南农村科技服务平台信息采集系统开发目的是帮助普通用户从多个指定农业网站自动、定时地采集农产品信息、科技信息,并将这些结构化信息按照自定义分类存储起来,为信息的二次利用提供便利。信息采集系统是以Web数据挖掘引擎为基础构建而成,它可以在最短的时间内,将最新的信息从不同的Web站点上采集下来,并在进行分类和统一格式后,第一时间之内把信息及时发布到自己的站点上去,从而提高信息及时性和减少工作量

10、。综合分析可知,信息采集系统需要的爬虫框架是定向爬虫,而不是搜索引擎爬虫。通过上面的介绍,Java爬虫框架Nutch、Heritrix均属于搜索引擎爬虫框架,Python爬虫框架Scrapy则属于定向爬虫框架6-7。综上所述,Scrapy框架值得作为第一选择。优点:支持xpath;基于twisted,性能不错;有较好的调试工具;很容易安装和使用;优秀的帮助文档;成熟且有针对性的解决方案;内置对代理、重定向、认证、cookies等方面的支持;内置对CSV、JSON和XML的支持。2基于Scrapy爬蟲框架的云南农村科技服务平台信息采集系统的实现信息采集系统将针对采集规则配置管理中已定制的目标信息

11、源,根据用户已生成的采集规则,定时自动地对这些网站进行信息采集、抽取、去重操作,将非结构化的信息从大量的网页中抽取出来保存到结构化的数据库中,其中,正文存储到文件系统。2.1Scrapy爬虫框架抓取原理采集规则配置,使用了xpath、正则表达式。xpath是一种结构化网页元素选择器,支持列表和单节点数据获取,它的好处是可以支持规整网页数据抓取。使用的是google插件XPath Helper,可以支持在网页点击元素生成xpath,就省去了自己去查找xpath的工夫,也便于未来做到所点即所得的功能。正则表达式补充xpath抓取不到的数据,还可以过滤一些特殊字符。去重操作,使用了Redis数据库8

12、。基于Redis的Bloomfilter去重,既用上了Bloomfilter的海量去重能力,又用上了Redis的可持久化能力。当redis数据库中没有一条url数据则会一直将整站的page抓取,但如果在某个时间点已经爬去完了数据,继续启动程序爬去增加的数据是会去判断每个url是否已经爬去,当url有重复时,则不会回调,实现url去重。Scrapy的整个数据处理流程由Scrapy引擎进行控制,其主要的运行方式为引擎打开一个域名时蜘蛛处理这个域名,并让蜘蛛获取第一个待爬取的URL。引擎从蜘蛛那获取第一个需要爬取的URL,然后作为请求在调度中进行调度。引擎从调度那获取接下来进行爬取的页面。调度将下一

13、个爬取的URL返回给引擎,引擎将它们通过下载中间件发送到下载器。当网页被下载器下载完成以后,响应内容通过下载中间件被发送到引擎。引擎收到下载器的响应并将它通过蜘蛛中间件发送到蜘蛛进行处理。蜘蛛处理响应并返回爬取到的项目,然后给引擎发送新的请求。引擎将抓取到的项目管道,并向调度发送请求。系统重复第二步后面的操作,直到调度中没有请求,然后断开引擎与域之间的联系。2.2Scrapy爬虫框架抓取实现方式采集程序是一个以Scrapy框架的Python脚本程序,接下来对程序设计与实现用一个简单的Scrapy爬取网易科技新闻的例子进行详细说明。爬虫之前首先应将大体思路理清楚,爬虫的对象是网易科技新闻。这个网

14、页上会有很多信息,有导航、专栏、新闻,还有一些广告,目的很明确爬新闻,细分一下主要包括新闻的标题、正文、来源、时间等。同时为了简单起见,对于新闻里的图片、视频等一系列多媒体元素也不做处理9。在Scrapy框架中要爬的内容都被定义在items.py文件中,定义也非常简单,代码如下:# -*- coding:utf-8 -*-# Define here the models for your scraped items# See documentation in:# http:/doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass

15、 Tech163Item(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()news_thread=scrapy.Field()news_title = scrapy.Field()news_url = scrapy.Field()news_time=scrapy.Field()news_from=scrapy.Field()from_url=scrapy.Field()news_body=scrapy.Field()其中,news_thread是从每条新闻的url中提取特有的一个字符串,比如这条新闻,它的地址是http:/定义完要爬的内容,再开始写爬虫蜘蛛spider,在目录tech163/spiders/下,创建spider文件,叫作news_spider.py。#encoding:utf-8import scrapyimport refrom scra

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 调研报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号