999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Scrapy的農業網絡數據爬取

2018-02-03 07:36:49李喬宇尚明華王富軍劉淑云
山東農業科學 2018年1期
關鍵詞:數據挖掘

李喬宇+尚明華+王富軍+劉淑云

摘要:準確、及時、高效地獲取農業數據是全產業鏈農業信息分析預警工作的前提和基礎,是提升農業信息分析預警專業化和規范化水平的關鍵。本研究針對互聯網中存在的大量農業信息數據,以玉米價格數據為例,設計數據抓取和規范化存儲策略,首先基于Scrapy框架建立對網頁的請求響應,分析網頁布局后對關鍵信息進行循環抓取,并利用正則表達式將抓取的信息提取為格式化數據,然后將數據本地化存儲為Microsoft Excel表格或存儲至數據庫中,最后利用Echarts將數據以可視化的方式在Web端展示,從而實現對農業網絡數據的挖掘和利用。

關鍵詞:Scrapy;爬蟲;網絡數據;數據挖掘;玉米價格

中圖分類號: S126 文獻標識號:A文章編號:1001-4942(2018)01-0142-06

Abstract Accurate, timely and efficient access to agricultural data is the prerequisite and basis for analysis and early warning of agricultural informations in the whole industry chain. It is the key to enhancing the professionalization and standardization of agricultural information analysis and early warning. With the maize price as an example, the research focused on large amounts of agricultural informations on the Internet and developed data crawling and normalized storage strategies. Firstly, we created request & response to the web pages based on Scrapy framework, analyzed the web page layout and then crawled the key informations cyclically;the data were extracted into formatted data using regular expressions, and then were stored as the localized data in a Microsoft Excel spreadsheet or in a database. Finally, Echarts was used to visualize the data on the Web, and thus the mining and utilization of agricultural network data were realized.

Keywords Scrapy; Crawler; Network data; Data mining; Maize price

隨著大數據技術的發展,農業大數據的開發和利用逐漸成為當前研究的熱點。農業大數據來源于農業生產、農業經濟、農業流通、農業科技等各個方面,來源廣,類型多,結構復雜,具有潛在應用價值。數據來源不同,其獲取技術不同,目前農業大數據獲取主要包括:農業生產環境數據采集、生命信息智能感知、農田變量信息快速采集、農業遙感數據獲取、農產品市場經濟數據采集、農業網絡數據抓取等[1]。在“互聯網+農業”的發展形勢下,農業網絡數據已成為農業大數據的重要組成部分,但由于其數據格式復雜多樣,不利于快速統計分析,多僅是對數據的粗略展示,因此,如何有效統一農業網絡數據格式,進一步挖掘數據的深層價值,成為當前大數據技術研究的重點。

農產品市場價格信息對于分析農產品市場行情變化,預測其價格走勢,降低交易風險,增加收益,具有重要意義。目前,網絡上的農產品價格數據,一般是由特定工作人員采集市場價格信息后通過移動終端上報各農業服務機構,再由農業服務機構發布到網上[2,3],對農產品交易具有一定的指導意義。但由于各服務機構發布的數據格式不統一,不利于對相關數據的進一步挖掘分析,限制了其利用價值。利用爬蟲技術從網絡中以一定的規則采集數據,并統一格式存儲,為進一步挖掘網絡數據應用價值奠定了基礎[4-7]。

網絡爬蟲(web crawler)也叫網絡蜘蛛(web spider),是實現自動瀏覽網頁和網頁數據抓取的計算機應用程序。Scrapy是使用Python編寫的爬蟲應用框架程序,具有結構簡單、使用方便的特點,用戶借助Scrapy可以快速瀏覽下載網頁信息,并根據需要保存關鍵數據為需要的數據格式。目前,Scrapy被廣泛應用于數據挖掘領域,已經發展成為數據挖掘研究領域重要的應用工具[8]。

玉米是我國重要的糧食作物,玉米價格是市場發展和供給平衡狀態的直接反映,通過提取其市場價格信息,不僅能夠直觀展示玉米交易市場的發展態勢,同時有利于為供給側結構性改革提供數據支撐,為相關部門制定生產發展決策提供理論依據。本研究以網絡上發布的玉米市場價格為例,基于Scrapy設計爬蟲,從中國飼料行業信息網爬取玉米價格信息數據,并以Microsoft Excel 表格的形式存儲或存為數據庫,以期為農業網絡數據的進一步挖掘利用提供一種有效的數據提取方法。

1 基于Scrapy的爬蟲設計

1.1 Scrapy框架

網絡爬蟲是以一定的規則自動抓取互聯網信息的程序或者腳本,需要面向不同的應用場合解決網絡連接、爬取策略等問題[9-12]。Scrapy爬蟲框架可以幫助開發者快速開發爬蟲,其基于Twisted異步網絡庫來處理網絡通訊,能夠實現并行、分布式爬取,提高了爬取效率。endprint

Scrapy爬蟲框架的結構如圖1所示,包括以下5個主要模塊:

①Scrapy Engine:引擎,負責Spiders(爬蟲)、Item Pipeline(隊列)、Downloader(下載器)、Scheduler(調度器)之間的信息通訊和數據傳遞;

②Scheduler:調度器,負責接受引擎發送過來的Requests(請求),并按照一定的規則放入隊列中;

③Downloader:下載器,負責下載Scrapy Engine發送的所有Requests,并將其獲取到的Responses(響應)交還給Scrapy Engine,由引擎交給Spiders來處理;

④Spiders:負責處理所有Responses,從中提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler;

⑤Item Pipeline:負責處理Spiders中獲取到的Item,并進行處理,如去重、持久化存儲等。

Scrapy的工作流程是:Scrapy Engine啟動并控制爬蟲運行,首先由Spider根據編寫的爬蟲策略控制Scrapy Engine向Scheduler發送請求(Requests),Scheduler將請求加入隊列,依次向Downloader發送,Downloader接收請求后將互聯網信息下載到本地成為響應(Response),傳遞給Spiders處理后形成Items,由Pipeline保存或輸出。

1.2 玉米價格爬蟲設計

1.2.1 玉米價格爬蟲特點 網絡爬蟲分為全網爬蟲和聚焦爬蟲。全網爬蟲面向整個互聯網,目的是盡可能多地索引互聯網資源[13],是實現搜索引擎的主要工具;聚焦爬蟲面向特定目標,目的是獲取信息和數據,是信息挖掘的主要工具。玉米價格爬蟲為聚焦爬蟲,目標不是從網絡資源中抓取特定網頁,而是從特定網站分類和檢索有價值的信息。因此,玉米價格爬蟲不需要檢索全網資源,負載小,設計重點是對價格數據的提取。

1.2.2 爬取策略設計 以中國飼料行業信息網的玉米頁面(http://www.feedtrade.com.cn/yumi/yumi_daily/)為例,見圖2。矩形框①標注的區域為玉米價格的文章列表;橢圓框②標注的區域為待爬取的文章標題。玉米價格爬蟲的目標,是在網頁中定位文章列表區域,獲取文章列表,從中篩選出希望爬取的文章標題,根據標題指向的鏈接進入文章內容頁,從內容頁中下載需要的信息到本地,不斷循環直至獲取所有需要的信息。

爬蟲工作流程如圖3,把入口點鏈接(http://www.feedtrade.com.cn/yumi/yumi_daily/)加入調度器(任務隊列)中,調度器將任務分配給下載器,下載器將鏈接指向的頁面下載到本地,根據解析規則判斷該頁面為文章列表頁,從該頁面獲取文章列表,根據列表中的標題是否包含“山東”、“玉米”字段選擇待爬取的文章標題,取出標題指向的內容鏈接放入調度器中,之后判斷文章列表頁是否有下一頁,如果有就將下一頁指向的鏈接放入調度器,依此循環,直至不存在下一頁。這樣就將所有的文章內容頁鏈接放入到了調度器,當下載器下載到文章內容頁,就會下載玉米價格文章,交由Pipeline做分析處理,提取玉米價格信息。當調度器中所有的鏈接都被下載,玉米價格信息爬取完成。

2 爬蟲實現

2.1 定義爬取對象

網頁中包含許多內容,爬蟲只抓取需要的內容。爬蟲的Item定義了爬取的對象,在玉米價格爬蟲中,用MaizeItem定義爬取對象,包括:文章標題、文章日期、文章鏈接、文章內容。

2.2 網頁爬取

Web網頁是結構化的,網頁中的任何內容都處于結構體中,因此可以在結構體的路徑中查詢到。如圖4所示,在Chrome瀏覽器中右鍵選擇“檢查”,可以看到網頁的結構體,框①顯示網頁中展示的玉米價格條目,框②為該條目在結構體中內容,其中包括文字信息和指向鏈接,框③為該條目在結構體中的路徑。使用xpath()可以根據結構體的路徑定位到玉米價格條目。在玉米價格爬蟲中,程序寫為:1. content=response.xpath(‘//ul/li/a[contains(@title,"山東玉米")])

該段代碼表示查找所有處于“ul/li/a”路徑下,題名包含“山東玉米”的條目,從中提取文章標題、文章日期和文章鏈接放入MaizeItem中。文章鏈接存為contentUrl,放入調度器中。對文章內容頁的解析與文章列表頁不同,使用scrapy.Request(contentUrl, callback=self.parseMaizePrice)指定解析規則是parseMaizePrice()。在parseMaizePrice中編寫解析規則,同樣使用xpath抓取文章內容,存入MaizeItem中,這樣形成了一條包括文章標題、日期、鏈接、內容的完整Item條目,交給Pipeline處理。此外,在文章列表頁和文章內容頁使用xpath()定位“下一頁”的鏈接,如果存在,則放入調度器中,繼續循環。

2.3 數據提取

在Pipeline中對爬取的MaizeItem對象進行處理,形成按日期索引的玉米價格數據。其中,MaizeItem中的文章內容是文字格式,形式如“……山東濰坊市壽光金玉米淀粉,價格統一調整為1.6元/千克。濰坊壽光新豐淀粉,水分30以內價格執行1.61元/千克,落0.01元……”,該內容信息分散,難以利用,需要對其進行進一步提取,以形成方便利用的價格數據。經分析,MaizeItem數據中包含的多個公司的玉米價格信息,只有部分文字內容和價格數據是每日變動的,而公司名是每日重復的。因此,數據提取的任務是:忽略文字內容,提取出公司名稱和價格數據,并建立二者的關聯關系。endprint

首先整理出公司名稱列表,根據該列表,使用正則表達式查找并提取該公司的玉米價格。正則表達式以“\d”表示數字,使用匹配規則“公司名稱+‘.*?(\d+.\d*)元/千克”可以查找到公司名稱下以“元/千克”為單位的價格數字。但價格數據的類型并不完全相同,有的是“X.X元/千克”的形式,還有的是“XX元/噸”或者“XX-XX元/噸”的形式,所以需要對公司列表根據價格數據的類型進行分類,然后用不同的正則表達式提取價格數據。數據提取的結果是公司列表中公司每日的玉米價格數據。

2.4 數據存儲

對于爬取得到的數據可以本地化存儲,也可以存入數據庫中。

2.4.1 本地化存儲 雖然Pipeline中可以直接建立json文件將數據寫入,但json文件可讀性比較差,因此,本研究嘗試將json文件進一步處理后保存為可讀性強的excel文件。提取到的公司每日玉米價格數據表是一個二維表結構,Pandas庫是python中處理數據的主要工具,借助其中的DataFrame可以存儲二維表結構。首先建立“{公司名:玉米價格}”的字典priceDict,再建立“{日期:priceDict}”的二維字典priceAll,將其保存為DataFrame,然后以公司列表建立DataFrame的索引,最終使用DataFrame的to_excel()方法保存為Excel文件(圖5)。

2.4.2 數據庫存儲 按照Scrapy中定義的數據模型在數據庫中建立表,使用python的第三方模塊pymysql登錄數據庫,執行sql語句向數據庫中插入數據。為實現增量爬取,需要在數據表中建立校驗字段,以內容鏈接的MD5加密信息作為校驗信息存儲,在插入數據前,先查詢數據的校驗信息是否已經在數據庫中存在,防止插入重復的數據。

2.5 數據爬取結果展示

將爬取的玉米價格數據利用Echarts控件在Web中展示(如圖5)。項目共享在Github上:https://github.com/joray86/maizeSpider。

3 結語

本研究實現了基于Scrapy的農業網絡數據爬取,爬蟲運行環境為CPU i5-4210U、4GB內存、Windows 7 64位操作系統,爬取中國飼料行業信息網(http://www.feedtrade.com.cn/yumi/yumi_daily/)的山東玉米價格信息,共訪問頁面228個,耗時6 383 ms,提取到山東省的玉米市場流通價格數據,可在Web中進行可視化展示,也可持久化存儲到數據庫中或者存為Excel文件,這為用大數據方法進一步挖掘有價值的信息、市場信息監測和預警分析,以及政府決策和供需結構調整等提供了有力、可靠的數據支撐。

利用爬取的山東省玉米市場價格數據,可實現玉米市場價格的年度間同比和月、日數據環比分析,獲得玉米市場價格的變化趨勢,可為玉米產業的生產、流通、加工各環節起到一定的引領和指導作用。

參 考 文 獻:

[1] 王文生, 郭雷風.農業大數據及其應用展望[J].江蘇農業科學, 2015, 43(9):43-46.

[2] 張石銳, 鄭文剛, 申長軍, 等.嵌入式手持無線農產品價格信息采集終端[J].計算機工程與設計, 2012, 33(2):514-518.

[3] 尚明華, 秦磊磊, 王風云, 等.基于智能手機的小麥生產風險信息采集系統[J].農業工程學報, 2011, 27(5):178-182.

[4] 段青玲, 魏芳芳, 張磊, 等.基于數據的農業網絡信息自動采集與分類系統[J].農業工程學報, 2016, 32(12):172-178.

[5] 孟繁疆, 姬祥, 袁琦, 等.農產品價格主題搜索引擎的研究與實現[J].東北農業大學學報, 2016, 47(9):64-71.

[6] 郭雷風.面向農業領域的大數據關鍵技術研究[D].北京:中國農業科學院, 2016.

[7] 李慧, 何永賢, 葉云.基于聚焦爬蟲的農業信息服務平臺設計與實現[J].天津農業科學, 2016, 10(10):60-63.

[8] 馬聯帥. 基于Scrapy的分布式網絡新聞抓取系統設計與實現[D].西安:西安電子科技大學,2015.

[9] 時永坤.基于Web Driver的定向網絡爬蟲設計與實現[J].軟件, 2016, 37(9):94-97.

[10]杜彬.基于Selenium的定向網絡爬蟲設計與實現[J].金融科技時代, 2016, 7(7):35-39.

[11]趙本本, 殷旭東, 王偉.基于Scrapy的GitHub數據爬蟲[J].電子技術與軟件工程, 2016, 6(6):199-202.

[12]夏火松, 李保國.基于Python的動態網頁評價爬蟲算法[J].軟件工程, 2016, 19(2):43-46.

[13]Castillo C. Effective web crawling[J]. ACM SIGIR Forum,2005, 39(1):55-56.endprint

猜你喜歡
數據挖掘
基于數據挖掘的船舶通信網絡流量異常識別方法
探討人工智能與數據挖掘發展趨勢
數據挖掘技術在打擊倒賣OBU逃費中的應用淺析
基于并行計算的大數據挖掘在電網中的應用
電力與能源(2017年6期)2017-05-14 06:19:37
數據挖掘技術在中醫診療數據分析中的應用
一種基于Hadoop的大數據挖掘云服務及應用
數據挖掘在高校圖書館中的應用
數據挖掘的分析與探索
河南科技(2014年23期)2014-02-27 14:18:43
基于GPGPU的離散數據挖掘研究
利用數據挖掘技術實現LIS數據共享的開發實踐
主站蜘蛛池模板: 国产一级妓女av网站| 手机看片1024久久精品你懂的| 国产香蕉在线视频| 国产免费好大好硬视频| 国产一级一级毛片永久| 久久久波多野结衣av一区二区| 性视频久久| 无码久看视频| 幺女国产一级毛片| 91在线日韩在线播放| 91福利片| 国产无遮挡裸体免费视频| 成人a免费α片在线视频网站| a毛片在线播放| 国产97视频在线观看| 国产精品视频猛进猛出| 欧美一级大片在线观看| 免费国产黄线在线观看| 欧洲熟妇精品视频| 国产无码制服丝袜| 美女裸体18禁网站| 国产亚洲精久久久久久无码AV| 欧美在线精品怡红院| 久久青草免费91观看| 又黄又爽视频好爽视频| 欧美国产日韩在线观看| 91精品国产一区| 亚欧美国产综合| 亚洲欧美一区二区三区蜜芽| 欧美成人在线免费| 国产精品久久久久鬼色| 色婷婷国产精品视频| 久久99热这里只有精品免费看| 十八禁美女裸体网站| 国产亚洲男人的天堂在线观看| 天天综合网色中文字幕| 综1合AV在线播放| 国产精品深爱在线| a级毛片免费看| 热热久久狠狠偷偷色男同| 久久伊人操| 亚洲性日韩精品一区二区| 国产成人精品男人的天堂| 九色在线观看视频| 这里只有精品在线播放| 久久亚洲欧美综合| 成人国产精品一级毛片天堂| 在线国产欧美| 国产在线精彩视频论坛| 夜夜操天天摸| 全部无卡免费的毛片在线看| 东京热一区二区三区无码视频| 一级毛片免费观看久| 久草美女视频| 日韩精品高清自在线| 久久99热66这里只有精品一| 亚洲高清日韩heyzo| 国产91色在线| 色久综合在线| 欧美α片免费观看| 91在线丝袜| 亚洲日本在线免费观看| 欧美在线视频a| 伊人大杳蕉中文无码| 亚洲成a人片77777在线播放 | 国产尤物视频在线| 国产精品亚洲一区二区三区在线观看| 国产麻豆永久视频| 久久99国产视频| 伊人网址在线| 91口爆吞精国产对白第三集 | 99精品视频在线观看免费播放| 国产91高跟丝袜| 中文纯内无码H| 欧美国产日韩另类| 国产男女免费视频| 日本国产精品一区久久久| 国产成人艳妇AA视频在线| 国产丰满大乳无码免费播放| 狠狠五月天中文字幕| 爱色欧美亚洲综合图区| 91探花在线观看国产最新|