陳付旻 洛桑嘎登 劉曉慧
摘要:隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)用戶人數(shù)和互聯(lián)網(wǎng)信息飛速增長(zhǎng),使得人們?cè)絹?lái)越依賴搜索引擎。網(wǎng)絡(luò)爬蟲作為搜索引擎中的一個(gè)重要的組成部分,是用戶獲取有效網(wǎng)絡(luò)資源的強(qiáng)大工具。通過對(duì)網(wǎng)絡(luò)爬蟲的基本結(jié)構(gòu)、基本工作流程進(jìn)行分析,利用Python實(shí)現(xiàn)對(duì)中國(guó)所有城市的最高、最低溫度指標(biāo)進(jìn)行實(shí)時(shí)數(shù)據(jù)爬取、分析以及數(shù)據(jù)可視化。本項(xiàng)目對(duì)中國(guó)各個(gè)城市的溫度情況進(jìn)行實(shí)時(shí)爬取、分析,并將結(jié)果通過大數(shù)據(jù)可視化的方式,較為直觀地展現(xiàn)給用戶,為用戶選擇適合的旅游城市起到向?qū)ё饔?,因此?yīng)用前景較為廣闊,具有一定的實(shí)用性。
關(guān)鍵詞:Python;爬蟲;數(shù)據(jù)爬取;數(shù)據(jù)可視化
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):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創(chuàng)意介紹
1.1 項(xiàng)目介紹
本項(xiàng)目利用PyCharm作為開發(fā)工具軟件,通過爬取技術(shù)獲取了中國(guó)各個(gè)城市的最高溫度和最低溫度,對(duì)各個(gè)城市的溫度進(jìn)行分析處理,并將所有城市的最高溫度和最低溫度進(jìn)行數(shù)據(jù)可視化,較為直觀地反映了城市的溫度狀況。
為選擇旅游城市的游客提供城市溫度向?qū)?。本?xiàng)目實(shí)現(xiàn)了從城市溫度的數(shù)據(jù)爬取到城市溫度的數(shù)據(jù)可視化工作。
1.2 項(xiàng)目可行性分析與應(yīng)用前景
隨著人們生活水平的提高,不再將注意力放到解決溫飽這個(gè)問題上,越來(lái)越多的人追求更舒適時(shí)尚的生活,根據(jù)調(diào)查,2018年中國(guó)國(guó)內(nèi)旅游人數(shù)達(dá)28.26億人次,比上年同期增長(zhǎng)11.4%,國(guó)內(nèi)旅游收入達(dá)2.45萬(wàn)億元。本項(xiàng)目對(duì)中國(guó)各個(gè)城市的溫度情況進(jìn)行分析并將結(jié)果較為直觀的展現(xiàn),對(duì)游客旅游城市的選擇起到了一定的向?qū)ё饔?,因此?yīng)用前景較為廣闊。
本項(xiàng)目采用Python爬蟲技術(shù),利用PyCharm工具軟件及Python2.7解析器,使用Python的解析庫(kù)BeautifulSoup,爬取了中國(guó)各個(gè)城市的名稱及其最低、高溫度數(shù)據(jù)并保存為項(xiàng)目文件,使用numpy進(jìn)行數(shù)據(jù)分析,分析出最冷和最熱的城市以及均值,最后通過pyecharts庫(kù)對(duì)數(shù)據(jù)進(jìn)行可視化。
2功能介紹
2.1 總體功能結(jié)構(gòu)圖
2.2 模塊功能介紹
2.2.1 爬蟲功能模塊
通過BeautifulSoup方法對(duì)網(wǎng)頁(yè)進(jìn)行解析,分析出中國(guó)所有的城市名稱以及對(duì)應(yīng)的溫度,將保存到項(xiàng)目根目錄中來(lái)。
2.2.2 ECharts數(shù)據(jù)可視化功能模塊
引入pyecharts庫(kù),以獲取到的城市名稱為橫坐標(biāo),對(duì)應(yīng)的溫度數(shù)值為縱坐標(biāo),繪制柱狀圖。
3 總體設(shè)計(jì)
3.1 數(shù)據(jù)設(shè)計(jì)
3.1.1 數(shù)據(jù)流程設(shè)計(jì)
本項(xiàng)目的數(shù)據(jù)來(lái)源為中國(guó)天氣網(wǎng)定期更新的天氣數(shù)據(jù),使用requests庫(kù)模擬Chrome瀏覽器,使用requests.get()方法對(duì)網(wǎng)頁(yè)數(shù)據(jù)進(jìn)行訪問并爬取。
3.1.2 數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)
將爬取到的數(shù)據(jù)利用json庫(kù)轉(zhuǎn)化成:“城市名—最低溫度—最高溫度”的格式存儲(chǔ)到項(xiàng)目根目錄之下。
3.2 界面設(shè)計(jì)
3.2.1 最高溫度界面
3.2.2 最低溫度界面
3.3 架構(gòu)設(shè)計(jì)
3.3.1采用架構(gòu)的原因
本項(xiàng)目采用了scrapy框架,scrapy是一個(gè)為爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,我們只需要實(shí)現(xiàn)少量代碼,就能夠快速的抓取到數(shù)據(jù)內(nèi)容。scrapy使用了Twisted異步網(wǎng)絡(luò)框架來(lái)處理網(wǎng)絡(luò)通訊,可以加快我們的下載速度,不用自己去實(shí)現(xiàn)異步框架,并且包含了各種中間接口,可以靈活地完成各種需求。
scrapy的工作流程:
a.首先Spiders(爬蟲)將需要發(fā)送請(qǐng)求的url(requests)經(jīng)ScrapyEngine(引擎)交給Scheduler(調(diào)度器)。
b.Scheduler(排序,入隊(duì))處理后,經(jīng)ScrapyEngine,DownloaderMiddlewares(可選,主要有User_Agent, Proxy代理)交給Downloader。
c.Downloader向互聯(lián)網(wǎng)發(fā)送請(qǐng)求,并接收下載響應(yīng)(response)。將響應(yīng)(response)經(jīng)ScrapyEngine,SpiderMiddlewares(可選)交給Spiders。
d.Spiders處理response,提取數(shù)據(jù)并將數(shù)據(jù)經(jīng)ScrapyEngine交給ItemPipeline保存(可以是本地,可以是數(shù)據(jù)庫(kù))。
e.提取url重新經(jīng)ScrapyEngine交給Scheduler進(jìn)行下一個(gè)循環(huán)。直到無(wú)Url請(qǐng)求程序停止結(jié)束。
4 技術(shù)難點(diǎn)
本項(xiàng)目開發(fā)過程中,主要遇到2個(gè)技術(shù)難點(diǎn),具體技術(shù)難點(diǎn)及解決方法如下:
4.1 突破反爬蟲技術(shù)難點(diǎn)
爬取數(shù)據(jù)過程中,很多網(wǎng)站設(shè)置了反爬蟲限制,他們根據(jù)ip訪問評(píng)率、瀏覽網(wǎng)頁(yè)速度、flash封裝等技術(shù)來(lái)反爬蟲。
團(tuán)隊(duì)通過偽裝Chrome瀏覽器的User agent信息為請(qǐng)求頭,在使用請(qǐng)求方法時(shí)以請(qǐng)求頭為參數(shù)。
4.2大數(shù)據(jù)可視化技術(shù)難點(diǎn)
在完成大數(shù)據(jù)可視化的過程中,由于Python3已經(jīng)不適用echarts庫(kù)來(lái)進(jìn)行數(shù)據(jù)可視化,使團(tuán)隊(duì)在完成數(shù)據(jù)可視化的過程中遇到了難點(diǎn)。取而代之的是pyecharts庫(kù)。
5 項(xiàng)目總結(jié)
大數(shù)據(jù)是近幾年迅速興起的技術(shù),由于本項(xiàng)目組成員對(duì)此技術(shù)的把握還尚不成熟,在編寫爬蟲的過程中遇到了一系列的問題,項(xiàng)目組成員通過查閱資料、閱讀Python幫助文檔最終克服了遇到的一系列問題。
通過完成此項(xiàng)目,團(tuán)隊(duì)成員收獲了如何對(duì)設(shè)置爬蟲限制的網(wǎng)頁(yè)進(jìn)行訪問,以及scrapy爬蟲框架的使用。為項(xiàng)目組成員開發(fā)更為有意義、更有技術(shù)難度的爬蟲打下了基礎(chǔ)。
項(xiàng)目組成員由兩名計(jì)算機(jī)專業(yè)的本科學(xué)生組成,由于實(shí)力還存在欠缺,本項(xiàng)目還存在一些不足,希望在未來(lái),為其添加旅游景點(diǎn)、機(jī)票火車票預(yù)訂等功能,做成一個(gè)融入金融支付的項(xiàng)目。
參考文獻(xiàn):
[1] 舒萬(wàn)暢.爬蟲在大數(shù)據(jù)領(lǐng)域中的應(yīng)用分析[J].科學(xué)技術(shù)創(chuàng)新,2018(6).
[2] 田曉玲.基于數(shù)據(jù)分析的關(guān)鍵詞類網(wǎng)絡(luò)爬蟲設(shè)計(jì)[J].北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2018(7).
[3] 陳樂.基于Python的網(wǎng)絡(luò)爬蟲技術(shù)[J].電子世界,2018(3).
[4] 張巖.大數(shù)據(jù)反爬蟲技術(shù)分析[J].信息系統(tǒng)工程,2018(14).
[5] 鄭苗.基于網(wǎng)絡(luò)爬蟲的北京市放假研究[J].長(zhǎng)江大學(xué),2018(5).
[6] 魏倩男.基于網(wǎng)絡(luò)爬蟲的京東電商平臺(tái)數(shù)據(jù)分析[J].經(jīng)濟(jì)數(shù)學(xué),2018(7).
【通聯(lián)編輯:梁書】