2024年3月8日发(作者:北京吉普bj40买后悔了)
基于 Scrapy和 Hadoop的农产品价格采集与分析方法研究
摘 要:本文以国内某农业网站的信息采集为例,基于Scrapy框架设计了农产品价格爬虫以及报价地信息爬虫,并基于Hadoop和Hive对价格数据进行分析,将分析结果可视化。设计报价地信息页面爬虫,提取出每一条报价地信息,并调用百度地图API来获得报价地经纬度,合并后通过pipline存入MySQL;设计农产品价格页面爬虫,提取出每一条农产品数据,并存入MySQL;最后将数据导出为CSV文件上传到HDFS中,通过Hadoop和Hive建立数据仓库,对数据进行分析并可视化。本论文研究的方法与技术对服务乡村振兴的农产品生产与销售,有着重要的实践价值和参考价值。
关键词:scrapy;hadoop;数据采集;数据分析
1 引言
乡村振兴是国家战略,是精准扶贫战略的继续深化,也是国家实现共同富裕、民族复兴目标的必然战略选择。随着信息技术的不断发展,面对不断涌现的大量农产品价格数据,乡村振兴迫切需要借助互联网技术对农产品价格数据进行基于大数据技术的持续跟踪与分析。为了满足上述需求,首先需要通过设计网络爬虫来采集网络上的农产品价格数据,然后通过大数据平台对农产品价格数据进行数据分析与可视化。本文选择国内某知名农业网站进行数据爬取,网络爬虫基于Scrapy框架进行设计,大数据平台则选择Hadoop,自行搭建虚拟机集群,通过Hive建立数据仓库实现对农产品价格数据的分析,将分析结果通过FineBI可视化呈现。
2 Scrapy程序框架分析
Scrapy是一个适用于Python的应用程序框架,使用Scrapy框架开发的网络爬虫可以高效地爬取网站数据、从网站中提取出结构化数据,Scrapy的应用领域
非常广泛,经常应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。Scrapy使用了Twisted异步网络框架来处理网络通讯,这加快了HTML页面的下载速度,也方便了使用者的开发,使用者不必自己再实现异步网络框架。并且Scrapy提供了很多中间件接口,可以满足使用者的很多需求。
3 设计Scrapy爬虫与数据库表
用例网站选择国内某知名农业网站。设计爬虫时,首先应注意此研究将采集到的数据用于公益性研究,降低请求并发量,保证不影响网站服务器的正常运行,且保证爬取的数据不用于商业用途。该网站有农产品批发市场信息页面、农产品价格展示页面,而农产品价格展示页面中每条价格数据包含产品名称、批发市场名称、当天最高价格、当天最低价格、平均价格、日期,采取深度优先策略进行垂直爬取。
3.1 设计农产品批发市场信息页面爬虫与数据库表
在MySQL中创建数据库,在数据库下创建农产品批发市场表market。用PyCharm打开项目文件夹进行开发。打开文件,我们是将采集到的数据用于公益性研究,并且我们在爬取网站时不能妨碍到网站服务器的正常运行,将CONCURRENT_REQUESTS并发量设置为较小的数值,将DOWNLOAD_DELAY下载延迟设置为较大的值。在中定义农产品批发市场item类,继承类,注册各个字段。
在spiders目录下创建爬虫文件nongye_,打开此文件开始设计网页爬虫。填写url,在浏览器中打开网页,用元素检查指针点击农产品批发市场名称所在标签,获得Xpath路径。在parse方法中将Response中通过Xpath语句获得批发市场信息。调用百度地图地理编码API获得经纬度与所在省市。以item形式提交给ItemPipline。实现页面自动翻页功能。每一页的url末尾数字递增,则通过字符串切片获得url末尾数字,加1后生成下一条url,并通过生成器继续提交Request。通过Xpath语句获得最大页数,作为是否继续提交请求的if判断条件。
[5][4][3][2][1]
在文件中连接MySQL数据库,通过’,’.join()和%s格式化输入符号编写sql通用语句实现数据库复用。运行爬虫文件nongye_,在数据库中得到数据。用同样的方法注册item并创建和编写农产品价格展示页面爬虫文件、获得Xpath路径、解析页面以及获取下一条url。运行爬虫文件,在数据库中得到数据。
4 数据分析与可视化
4.1 搭建Hadoop集群
搭建Hadoop集群,用VM软件搭建三台虚拟机来进行验证,在三台虚拟计算机上分别安装Linux操作系统,在本机下载终端。根据教程在集群上搭建Hadoop平台,部署HDFS、MapReduce以及YARN,完成各种相关配置。在Hadoop上安装Hive,完成相关配置,根据官方手册与教程安装Hive并完成相关配置。
4.2 数据清洗、数据分析与可视化
根据设计的网络爬虫,爬取了2月1号到2月7号的数据进行验证性分析。首先将本地MySQL数据库中的两份数据表导出为csv格式文件,上传到Hadoop所在服务器中。在集群上启动Hive,并在本机用DataGrip创建Hive操作项目,配置连接Hive数据仓库,用Hive SQL语句创建数据库,并建立相应的映射数据表。将CSV文件内容加载到Hive数据库中的相应表中。
创建新的数据表product,内容为农产品价格信息表与农产品批发市场信息表的内联和,提取产品名称、报价批发市场、所在省、所在市、报送价格、发送年、发送月、发送日、经度、纬度字段,其中利用字符串切割获取年和月,将其他字段以place为条件进行合并。农产品种类很多,现以农产品丝瓜为例,从product表中抽离丝瓜的数据作为新表进行数据分析与指标计算。实现展示其中几个指标,作为验证性操作,包括全国报价分布地图、今日报送价格最高的Top10农产品批发市场等,并配置FineBI服务器连接Hive,通过FineBI将结果可视化。
6 总结
本论文提出了一种农产品价格数据采集与分析的新方法,实现了基于Scrapy框架的农产品价格数据爬虫,并根据所在地通过调用百度地图API得到经纬度,将其保存到数据库中;搭建了安装有Linux系统的虚拟服务器集群,并在集群上部署Hadoop大数据平台并安装建立Hive数据仓库,编写Hive数据分析语句通过Hive与Hadoop的MapReduce对数据进行分析,最后将分析结果可视化,验证性地展现了蔬菜价格情况在中国地图上分布、农产品价格走势、今日价格排行榜以及区域价格对比等情况,本论文研究的方法与技术对服务乡村振兴的农产品生产与销售,有着重要的实践价值和参考价值。
参考文献:
[1] 胡松涛. PYTHON 网络爬虫实战[M]. 北京:清华大学出版社,2017.
[2] 迪米特里斯·考奇斯-劳卡斯. 精通Python爬虫框架Scrapy[M].人民邮电出版社:, 201802.258.
[3] 陈皓,周传生.基于Python和Scrapy框架的网页爬虫设计与实现[J].电脑知识与技术,2021,17(13):3-5.
[4] 鲜敏.面向海量网络数据的收集方法研究与分析[J].电脑编程技巧与维护,2021,(08):64-66.
[5] 李通,姚新强.Scrapy框架下区域人口数据爬虫的设计与实现[J].软件导刊,2021,20(11):152-157.
本文是2021年广西大学生创新创业训练计划“面向乡村振兴信息搜索服务的特定网络爬虫分析与研发”(项目编号:2)项目成果。
本文是广西自然科学基金项目“基于Web学习资源多特征融合的联合排序算法研究(联合资助培育项目)”(项目任务书编号:2018GXNSFAA294123)项目成果。
项目编号:2 基金项目:国家级大学生创新创业训练计划项目资助
更多推荐
农产品,数据,价格,爬虫,进行,设计,页面,信息
发布评论