陳付旻 洛桑嘎登 劉曉慧
摘要:隨著互聯網技術的飛速發展,互聯網用戶人數和互聯網信息飛速增長,使得人們越來越依賴搜索引擎。網絡爬蟲作為搜索引擎中的一個重要的組成部分,是用戶獲取有效網絡資源的強大工具。通過對網絡爬蟲的基本結構、基本工作流程進行分析,利用Python實現對中國所有城市的最高、最低溫度指標進行實時數據爬取、分析以及數據可視化。本項目對中國各個城市的溫度情況進行實時爬取、分析,并將結果通過大數據可視化的方式,較為直觀地展現給用戶,為用戶選擇適合的旅游城市起到向導作用,因此應用前景較為廣闊,具有一定的實用性。
關鍵詞:Python;爬蟲;數據爬取;數據可視化
中圖分類號:TP391 文獻標識碼:A
文章編號:1009-3044(2019)11-0029-02
Abstract: With the rapid development of the Internet, the number of Internet users and the rapid growth of Internet information make people rely more and more on search engines. As an important part of search engine, web crawler is a powerful tool for users to obtain effective network resources. Based on the analysis of the basic structure and workflow of web crawler, data crawling, analysis and data visualization of the highest and lowest temperature indicators in all cities of China are realized by Python. This project will analyze the temperature situation of each city in China and show the results intuitively, which will undoubtedly play a guiding role in tourists'choice of tourist cities. Therefore, it has a broad application prospect and certain practicability.
Key words: Python; Spider; Data crawling; Data visualization
1創意介紹
1.1 項目介紹
本項目利用PyCharm作為開發工具軟件,通過爬取技術獲取了中國各個城市的最高溫度和最低溫度,對各個城市的溫度進行分析處理,并將所有城市的最高溫度和最低溫度進行數據可視化,較為直觀地反映了城市的溫度狀況。
為選擇旅游城市的游客提供城市溫度向導。本項目實現了從城市溫度的數據爬取到城市溫度的數據可視化工作。
1.2 項目可行性分析與應用前景
隨著人們生活水平的提高,不再將注意力放到解決溫飽這個問題上,越來越多的人追求更舒適時尚的生活,根據調查,2018年中國國內旅游人數達28.26億人次,比上年同期增長11.4%,國內旅游收入達2.45萬億元。本項目對中國各個城市的溫度情況進行分析并將結果較為直觀的展現,對游客旅游城市的選擇起到了一定的向導作用,因此應用前景較為廣闊。
本項目采用Python爬蟲技術,利用PyCharm工具軟件及Python2.7解析器,使用Python的解析庫BeautifulSoup,爬取了中國各個城市的名稱及其最低、高溫度數據并保存為項目文件,使用numpy進行數據分析,分析出最冷和最熱的城市以及均值,最后通過pyecharts庫對數據進行可視化。
2功能介紹
2.1 總體功能結構圖
2.2 模塊功能介紹
2.2.1 爬蟲功能模塊
通過BeautifulSoup方法對網頁進行解析,分析出中國所有的城市名稱以及對應的溫度,將保存到項目根目錄中來。
2.2.2 ECharts數據可視化功能模塊
引入pyecharts庫,以獲取到的城市名稱為橫坐標,對應的溫度數值為縱坐標,繪制柱狀圖。
3 總體設計
3.1 數據設計
3.1.1 數據流程設計
本項目的數據來源為中國天氣網定期更新的天氣數據,使用requests庫模擬Chrome瀏覽器,使用requests.get()方法對網頁數據進行訪問并爬取。
3.1.2 數據倉庫設計
將爬取到的數據利用json庫轉化成:“城市名—最低溫度—最高溫度”的格式存儲到項目根目錄之下。
3.2 界面設計
3.2.1 最高溫度界面
3.2.2 最低溫度界面
3.3 架構設計
3.3.1采用架構的原因
本項目采用了scrapy框架,scrapy是一個為爬取網站數據,提取結構性數據而編寫的應用框架,我們只需要實現少量代碼,就能夠快速的抓取到數據內容。scrapy使用了Twisted異步網絡框架來處理網絡通訊,可以加快我們的下載速度,不用自己去實現異步框架,并且包含了各種中間接口,可以靈活地完成各種需求。
scrapy的工作流程:
a.首先Spiders(爬蟲)將需要發送請求的url(requests)經ScrapyEngine(引擎)交給Scheduler(調度器)。
b.Scheduler(排序,入隊)處理后,經ScrapyEngine,DownloaderMiddlewares(可選,主要有User_Agent, Proxy代理)交給Downloader。
c.Downloader向互聯網發送請求,并接收下載響應(response)。將響應(response)經ScrapyEngine,SpiderMiddlewares(可選)交給Spiders。
d.Spiders處理response,提取數據并將數據經ScrapyEngine交給ItemPipeline保存(可以是本地,可以是數據庫)。
e.提取url重新經ScrapyEngine交給Scheduler進行下一個循環。直到無Url請求程序停止結束。
4 技術難點
本項目開發過程中,主要遇到2個技術難點,具體技術難點及解決方法如下:
4.1 突破反爬蟲技術難點
爬取數據過程中,很多網站設置了反爬蟲限制,他們根據ip訪問評率、瀏覽網頁速度、flash封裝等技術來反爬蟲。
團隊通過偽裝Chrome瀏覽器的User agent信息為請求頭,在使用請求方法時以請求頭為參數。
4.2大數據可視化技術難點
在完成大數據可視化的過程中,由于Python3已經不適用echarts庫來進行數據可視化,使團隊在完成數據可視化的過程中遇到了難點。取而代之的是pyecharts庫。
5 項目總結
大數據是近幾年迅速興起的技術,由于本項目組成員對此技術的把握還尚不成熟,在編寫爬蟲的過程中遇到了一系列的問題,項目組成員通過查閱資料、閱讀Python幫助文檔最終克服了遇到的一系列問題。
通過完成此項目,團隊成員收獲了如何對設置爬蟲限制的網頁進行訪問,以及scrapy爬蟲框架的使用。為項目組成員開發更為有意義、更有技術難度的爬蟲打下了基礎。
項目組成員由兩名計算機專業的本科學生組成,由于實力還存在欠缺,本項目還存在一些不足,希望在未來,為其添加旅游景點、機票火車票預訂等功能,做成一個融入金融支付的項目。
參考文獻:
[1] 舒萬暢.爬蟲在大數據領域中的應用分析[J].科學技術創新,2018(6).
[2] 田曉玲.基于數據分析的關鍵詞類網絡爬蟲設計[J].北京工業職業技術學院學報,2018(7).
[3] 陳樂.基于Python的網絡爬蟲技術[J].電子世界,2018(3).
[4] 張巖.大數據反爬蟲技術分析[J].信息系統工程,2018(14).
[5] 鄭苗.基于網絡爬蟲的北京市放假研究[J].長江大學,2018(5).
[6] 魏倩男.基于網絡爬蟲的京東電商平臺數據分析[J].經濟數學,2018(7).
【通聯編輯:梁書】