◎龐笑笑 趙廣宣 戶慶凱
本文實(shí)現(xiàn)了瓜果蔬菜價(jià)格等信息的數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)、分析和可視化。主要研究?jī)?nèi)容是利用數(shù)據(jù)采集技術(shù)對(duì)“北京新發(fā)地農(nóng)產(chǎn)品批發(fā)市場(chǎng)”網(wǎng)站的瓜果蔬菜價(jià)格信息數(shù)據(jù)進(jìn)行爬取,通過(guò)對(duì)市場(chǎng)的價(jià)格和種類進(jìn)行數(shù)據(jù)分析,可以預(yù)測(cè)之后幾天的蔬菜水果價(jià)錢的波動(dòng),購(gòu)買蔬菜的量的多少提供幫助。方便商家或用戶批發(fā)購(gòu)買瓜果蔬菜時(shí)做出更合理的決策,使利益最大化。另外還可觀察市場(chǎng)供貨量數(shù)據(jù),為市場(chǎng)變動(dòng)需求做好應(yīng)變。
近年來(lái),隨著大數(shù)據(jù)、物聯(lián)網(wǎng)、云計(jì)算、移動(dòng)互聯(lián)、LBS、遙感及地理信息技術(shù)的飛速發(fā)展,農(nóng)業(yè)數(shù)據(jù)呈現(xiàn)海量爆發(fā)趨勢(shì),我國(guó)農(nóng)業(yè)也隨之跨步邁入大數(shù)據(jù)時(shí)代。
在現(xiàn)如今的大數(shù)據(jù)時(shí)代,幾乎所有的國(guó)家都開始意識(shí)到網(wǎng)絡(luò)大數(shù)據(jù)帶來(lái)的便利和機(jī)遇,開始利用農(nóng)業(yè)大數(shù)據(jù)技術(shù)以及其它領(lǐng)域的新技術(shù)大力發(fā)展農(nóng)業(yè),涉及領(lǐng)域和內(nèi)容廣泛,影響因素很多,數(shù)據(jù)收集復(fù)雜,決策管理困難。因此,要實(shí)現(xiàn)農(nóng)業(yè)大數(shù)據(jù)的潛力,仍然存在一些阻力。但是同時(shí),由于這些特點(diǎn),農(nóng)業(yè)已經(jīng)成為大數(shù)據(jù)的無(wú)窮源,農(nóng)業(yè)大數(shù)據(jù)的應(yīng)用也有更多的可能性。
北京新發(fā)地農(nóng)產(chǎn)品批發(fā)市場(chǎng)成立于1988 年5 月16 日市場(chǎng)建設(shè)初期只是一個(gè)占地15 畝、管理人員15 名、啟動(dòng)資金15萬(wàn)元,連圍墻都是用鐵絲網(wǎng)圍起來(lái)的小型農(nóng)貿(mào)市場(chǎng)。市場(chǎng)現(xiàn)占地1680 畝,管理人員1500 名,固定攤位2000 個(gè)左右、定點(diǎn)客戶4000 多家,日吞吐蔬菜1.8 萬(wàn)噸、果品2 萬(wàn)噸、生豬3000 多頭、羊1500 多只、牛150 多頭、水產(chǎn)1500 多噸。近年來(lái),市場(chǎng)本著“扶大、扶強(qiáng)、扶優(yōu)”的原則,培養(yǎng)出單品經(jīng)營(yíng)大王100 名,綜合銷售百?gòu)?qiáng)100 名,形成了以蔬菜、果品批發(fā)為龍頭,肉類、糧油、水產(chǎn)、調(diào)料等十大類農(nóng)副產(chǎn)品綜合批發(fā)交易的格局。
市場(chǎng)成立33 年來(lái),始終秉承“讓客戶發(fā)財(cái),求市場(chǎng)發(fā)展”的宗旨,以“服務(wù)首都、服務(wù)三農(nóng)”為己任,堅(jiān)持以道德和責(zé)任做好首都農(nóng)產(chǎn)品安全供應(yīng)這個(gè)天大的事;用講良心,守誠(chéng)信,為百姓,承擔(dān)了首都80%以上的農(nóng)產(chǎn)品供應(yīng)。2020 年交易量1298 萬(wàn)噸,交易額1006 億元人民幣。在全國(guó)4600 多家農(nóng)產(chǎn)品批發(fā)市場(chǎng)中,新發(fā)地市場(chǎng)交易量、交易額名列前茅,是首都名副其實(shí)的大“菜籃子”和大“果盤子”?!靶掳l(fā)地”品牌已成為中國(guó)農(nóng)產(chǎn)品的代名詞,新發(fā)地市場(chǎng)的農(nóng)產(chǎn)品價(jià)格指數(shù)成為引領(lǐng)中國(guó)農(nóng)產(chǎn)品市場(chǎng)價(jià)格的風(fēng)向標(biāo)和晴雨表。
利用數(shù)據(jù)采集技術(shù)對(duì)“北京新發(fā)地農(nóng)產(chǎn)品批發(fā)市場(chǎng)”網(wǎng)站的瓜果蔬菜價(jià)格信息數(shù)據(jù)進(jìn)行爬取,通過(guò)對(duì)市場(chǎng)的價(jià)格和種類進(jìn)行數(shù)據(jù)分析,可以預(yù)測(cè)之后幾天的蔬菜水果價(jià)錢的波動(dòng),買蔬菜的量的多少提供幫助。為商家或用戶批發(fā)購(gòu)買瓜果蔬菜提供更優(yōu)的選擇。實(shí)現(xiàn)了蔬菜水果價(jià)格等信息的數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)、分析和可視化。
通過(guò)使用爬蟲技術(shù),能在短時(shí)內(nèi)提取有價(jià)值的信息數(shù)據(jù)。得到有價(jià)值的數(shù)據(jù)后,根據(jù)數(shù)據(jù)的形式進(jìn)行整理,運(yùn)用HTML、CSS、JavaScript、Flask 框架、Echarts、WordCloud 等技術(shù)對(duì)數(shù)據(jù)進(jìn)行可視化展現(xiàn)。將數(shù)據(jù)進(jìn)行完整地分析,有利于更好地利用數(shù)據(jù)解決實(shí)際問(wèn)題。本文將對(duì)基于Python 的聚焦式網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)以及分析菜市場(chǎng)價(jià)格數(shù)據(jù)并可視化地展出使結(jié)果更直觀化。
訪問(wèn)目標(biāo)網(wǎng)站,利用瀏覽器在北京新發(fā)地主頁(yè)中選擇價(jià)格行情的歷史數(shù)據(jù),查看某一月份的最高價(jià)格、最低價(jià)格、平均價(jià)格以及記錄狀況。按F12 查看網(wǎng)頁(yè)源代碼,將想要爬取的內(nèi)容的Xpath 路徑復(fù)制下來(lái),在桌面創(chuàng)建一個(gè)文本文檔用于放置所復(fù)制的Xpath 路徑,在后面編寫程序代碼時(shí)會(huì)用到,用Xpath 對(duì)HTML 進(jìn)行解析。最后將爬取到的數(shù)據(jù)保存為csv 文件并將數(shù)據(jù)進(jìn)行分析可視化展示。
爬取目標(biāo)網(wǎng)站為北京新發(fā)地農(nóng)產(chǎn)品批發(fā)市場(chǎng)官網(wǎng)(http://www.xinfadi.com.cn/)。首先導(dǎo)入代替瀏覽器發(fā)請(qǐng)求的Requests 模塊,再次導(dǎo)入使我們能更好更快地拿到數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理的html,最后導(dǎo)入CSV 庫(kù),將數(shù)據(jù)寫入到CSV 文件中。
(1)導(dǎo)入 requests 和 csv 模塊,同時(shí)實(shí)例化一個(gè) class:vegatable_data。具體代碼如下:
(2)分析URL。
對(duì)網(wǎng)頁(yè)源代碼分析,通過(guò)刷新查找到異步加載的包,發(fā)現(xiàn)異步加載的包返回的就是我所需要的數(shù)據(jù)。對(duì)返回的數(shù)據(jù)進(jìn)行 分 析 發(fā) 現(xiàn) Imit,current,pubDateStartTime,pubDateEnd-Time,prodPcatid,prodCatid,prodName ,這些關(guān)鍵詞返回的就是所要抓取的數(shù)據(jù)內(nèi)容。如圖1 所示。
圖1 getPriceData。html 的 Preview
通過(guò)對(duì)異步加載的進(jìn)行分析發(fā)現(xiàn),網(wǎng)頁(yè)采用的是post 請(qǐng)求,返回的是json 類型數(shù)據(jù),對(duì)返回的關(guān)鍵字進(jìn)行初始化。具體代碼如下所示。
獲取到的數(shù)據(jù)會(huì)以指定格式存放。由于CSV 文件使數(shù)據(jù)交換更容易,故采用CSV 的形式進(jìn)行存儲(chǔ)??紤]到后邊對(duì)數(shù)據(jù)進(jìn)行分析、數(shù)據(jù)可視化等問(wèn)題,所以采用一次性寫入的方法進(jìn)行。具體實(shí)現(xiàn)代碼如下:
對(duì)目標(biāo)數(shù)據(jù)進(jìn)行整理,通過(guò)tableau 軟件工具,對(duì)爬取的半個(gè)月蔬菜價(jià)格信息進(jìn)行分析。
(1)平均價(jià)格分析。
對(duì)半個(gè)月的蔬菜、水果平均價(jià)格數(shù)據(jù)進(jìn)行分析,如圖2 所示。大部分時(shí)間處于穩(wěn)定狀態(tài),只有5 月10 日的價(jià)格有個(gè)突變上升狀態(tài)。
圖2 蔬菜水果平均價(jià)格
(2)蔬菜單個(gè)平均價(jià)格。
用氣泡圖來(lái)圖示各種蔬菜的平均價(jià)格。氣泡越大表示價(jià)格越高。如圖3 所示,通過(guò)對(duì)平均價(jià)格和蔬菜總類發(fā)現(xiàn),雞蛋的平均價(jià)格較高。購(gòu)買雞蛋是要慎重。不是購(gòu)入的最佳時(shí)機(jī),可再等等。
圖3 蔬菜平均價(jià)格
(3)平均價(jià)格,最低價(jià)格,最高價(jià)格對(duì)比分析。
通過(guò)對(duì)平均價(jià)格,最低價(jià)格,最高價(jià)格的對(duì)比發(fā)現(xiàn),在5月10 日的時(shí)候菜價(jià)達(dá)到了最高價(jià)格?,F(xiàn)在的蔬菜價(jià)格趨于平穩(wěn),可以適量的增加買菜的數(shù)量。如圖4 所示。
圖4 平均價(jià)格,最低價(jià)格,最高價(jià)格對(duì)比
(4)蔬菜供貨量。
通過(guò)對(duì)天數(shù),供貨量,供貨次數(shù)進(jìn)行可視化分析,可知市場(chǎng)供貨量充足。如圖5 所示,可以根據(jù)價(jià)格的價(jià)格波動(dòng)趨勢(shì)在適當(dāng)?shù)狞c(diǎn)購(gòu)入適量所需蔬菜水果,使利益最大化。
圖5 供貨量
本文通過(guò)對(duì)蔬菜價(jià)格的分析,可以給商戶或個(gè)人提供買菜建議,運(yùn)用相關(guān)的專業(yè)知識(shí)對(duì)以往數(shù)據(jù)進(jìn)行橫向和縱向比較,發(fā)現(xiàn)高點(diǎn)和低點(diǎn)以及平均點(diǎn)等,商戶或個(gè)人可以根據(jù)價(jià)格的價(jià)格波動(dòng)趨勢(shì)在適當(dāng)?shù)狞c(diǎn)購(gòu)入適量所需蔬菜水果。使利益最大化。另外還可觀察市場(chǎng)供貨量數(shù)據(jù),為市場(chǎng)變動(dòng)需求做好應(yīng)變。本文使用數(shù)據(jù)采集技術(shù)很好地利用數(shù)據(jù)解決實(shí)際生活問(wèn)題。方便菜農(nóng)以及批發(fā)商對(duì)各地蔬菜價(jià)格的實(shí)時(shí)了解做出合理的決策。