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

基于Python Beautiful Soup的多線程數據獲取

2018-10-24 15:31:44薛曉軍薛濤鄧仕宏
科學與財富 2018年26期

薛曉軍 薛濤 鄧仕宏

摘 要:利用Python BeautifulSoup模塊,抓取環境監測網站的數據,并對數據進行處理后存儲。爬蟲程序在服務器上持續運行。當網絡不穩定時,爬取失敗后仍會繼續自動重試。該程序對網頁數據不斷爬取,保證數據的連續性價值。通過多線程爬蟲程序提高數據獲取的效率。通過對共同訪問的數據進行加鎖,防止出現資源訪問的錯誤,進行線程的同步。使用百度地圖web服務API中的地理編碼服務,對監測地點進行經緯度的確定。

關鍵詞:數據獲取;多線程程序;線程同步

1.項目研究背景及意義

隨著工業化和城市化進程的推進,城市的空氣污染狀況日趨嚴重,中國目前已經成為全球PM2.5污染最為嚴重的地區之一[1-3]。“霧霾”出現頻率的增加,范圍擴大,嚴重影響到我們的生活質量和身體健康。

北京地區霧霾污染嚴重,區域傳輸影響較大,北京霧霾的成因中,傳輸型的污染占比約30%(全年平均),在傳輸型污染中,區域傳輸所占的比例高于50%。從霧霾成因全年平均來看,區域傳輸占比約20%。2016年環保部專家們會商認定黑龍江秸稈焚燒造成幾乎從整個東北到華北甚至山東江蘇霧霾,但此認定缺少示蹤監測、模型分析的過程,缺少相關的科學依據,也沒有向民眾展示霧霾傳輸的方式和軌跡,并沒有得到廣大群眾的認可。而在目前公布的數據中,只給出區域傳輸所占比例,沒有給出霧霾區域傳輸的來源,即傳輸來源于哪些地區及其所占的比例并不明確。

2.1獲取數據

2.1.1數據來源背景

本項目的數據主要來源是Pm25.in網站,數據來源豐富,該網站共包括375座城市,1600個數據點。每個點包含AQI、空氣質量指數類別、首要污染物、PM2.5細顆粒物、PM10可吸入顆粒物等重要污染物,符合本項目對霧霾區域傳輸研究數據的要求。

數據來源可靠、真實。Pm25.in網站是一個為廣大應用開發者免費提供空氣質量數據的一個公益性網站,Pm25.in的數據全部來源于網友提供的國家環保網站公開數據,網站會根據國家環保網站的實時數據進行二次核實。

2.1.2獲取數據方式的選擇

運用python的Beautiful Soup庫對Pm25.in網站進行數據爬取。Beautiful Soup 是一個可以從HTML或XML文件中提取數據的Python庫,它是一個靈活又方便的網頁解析庫,處理高效,支持多種解析器。它能夠通過轉換器實現慣用的文檔導航,查找,修改文檔的方式,Beautiful Soup具有高效性,會幫本項目在爬取節省很多工作時間。

2.1.3獲取數據的步驟

1)獲取網頁源碼

采用python的urllib2模塊對Pm25.in網站數據進行爬取。利用urllib2庫的HTTPCookieProcessor對象來創建cookie處理器,讓HTTPCookieProcessor作為build_opener()函數的參數來創建自定義Opener對象。將urllib2.Request()實例化,需要訪問的url地址連同headers則作為Request實例的參數,返回獲取網頁的源碼。

獲取網頁源碼的python程序設計如下圖獲取網頁源碼程序圖所示:

2)處理網頁源碼

運用Beautiful Soup庫的find() split()方法遍歷源碼,找到所需要的數據。利用python對文件的處理,將這些需要的原始數據寫入記事本當中,以便以后處理使用。

處理源碼的python程序設計如下圖處理網頁源碼圖所示:

3)需要注意的問題

●連續性

當出現網絡不穩定或網絡斷開導致爬取數據失敗時,爬蟲程序自動重試對網頁源碼的讀取,重試失敗次數達到10次后放棄爬取,輸出錯誤日志。等待人工處理錯誤。這樣設計python程序可以保證該程序對Pm25.in網站的數據不斷的爬取,盡量使得獲取的數據是連續的,更有利用價值。

●實時性

Pm25.in網站的數據是一個小時更新一次,為確保數據的實時性,爬蟲程序便每一小時對監測點數據進行抓取。確保獲取數據的有效性和實時性。對這些實效性數據進行清洗后,用于霧霾區域傳輸相關性研究,可以確保研究的正確性和時效性。

●高效性

使用多線程對網站數據進行抓取。多線程之間可以快速切換,提高效率,縮短爬取大量數據所需的時間。最初實現爬蟲程序時,使用單線程進行數據抓取,抓取效率很低,單次執行需要等待較長時間,測試時效率也很低。對程序進行完善,使用多線程實現效率的提升。定義MultiThread類實現多線程的抓取,在該類的構造函數中有兩個參數,一個是并發線程的總數,一個是任務個數。通過調整并發線程的總數實現不同效率的數據抓取。MultiThread類的具體實現如圖所示。

通過對共同訪問的數據進行加鎖,進行線程的同步,防止出現資源訪問的錯誤。剛開始使用多線程程序對文件進行讀寫操作時,最終存入文件的數據總是錯誤的,有的是多行數據混在一行,有的是數據編號不正確,出現了很多問題,發現問題是多個線程同時對文件進行讀寫,出現了讀寫錯誤。解決方法是對共同訪問的文件進行加鎖,當有進程在對文件進行操作時,其他進程進行等待,進行線程的同步。加鎖的位置也十分關鍵,共同使用的文件、變量都需要進行加鎖。

2.2數據處理

地點與對應經緯度轉化:對于爬取的數據進行經緯度的轉換,在這里使用的是百度地圖web服務API中的地理編碼服務。

獲取密鑰:注冊百度賬號,申請成為百度開發者之后,獲得服務密鑰(ak)。然后便可以運用拿到的ak來使用地理編碼服務,使得本項目數據點的具體地址轉化為需要的經緯度。

調用服務:本項目對地理編碼服務的請求,具體是對http://api.map.baidu.com/geocoder/v2/?address=北京市海淀區上地十街&output;=json&ak;=ak&callback;=showLocation網址進行GET請求。

參考文獻:

[1]孟偉,高慶先,張志剛等. 北京及周邊地區大氣污染數值模擬研究[ J ]. 環境科學研究. 2006,19(5):11-18.

[2]安靜宇. 長三角地區冬季大氣細顆粒物來源追蹤模擬研究[D].碩士學位論文. 東華大學,2015年.

[3] Wang YueSi, Yao Li, Wang LiLi , et al .Mechanism for the formation of the January 2013 heavy haze pollution episode over central and eastern China[ J ]. Science China Earth Sciences,January 2014 ,Vol.57 No.1: 14–25.

主站蜘蛛池模板: 国产成人在线无码免费视频| 欧美一区中文字幕| 中国一级特黄视频| 在线精品视频成人网| 亚洲中文字幕无码爆乳| 国产永久无码观看在线| 久久久久青草大香线综合精品| 亚洲精品视频在线观看视频| 国产99视频精品免费视频7| 免费人成在线观看视频色| 欧美日本激情| 色噜噜综合网| julia中文字幕久久亚洲| 久久99这里精品8国产| 国产成人无码Av在线播放无广告| 91久久偷偷做嫩草影院免费看 | 波多野结衣一区二区三区四区视频 | 日本伊人色综合网| 欧美影院久久| 国产人成网线在线播放va| 99久久精品免费看国产电影| 国产美女精品在线| 波多野结衣一区二区三视频| 精品亚洲国产成人AV| 曰韩人妻一区二区三区| 免费日韩在线视频| 亚洲综合婷婷激情| 日韩在线2020专区| 亚洲妓女综合网995久久| 国产亚洲第一页| 日日拍夜夜操| 久久96热在精品国产高清| 欧美日本在线一区二区三区| 精品免费在线视频| 国产精品漂亮美女在线观看| 精品少妇三级亚洲| 九色国产在线| 日本亚洲国产一区二区三区| 亚洲无线国产观看| 久久综合亚洲鲁鲁九月天| 久久免费看片| 青青青伊人色综合久久| 91人妻日韩人妻无码专区精品| av色爱 天堂网| 亚洲人成电影在线播放| 国产a v无码专区亚洲av| 最新国产麻豆aⅴ精品无| 久久中文字幕2021精品| 亚洲三级网站| 91精品国产丝袜| 青青草欧美| 成人免费视频一区| 欧美综合区自拍亚洲综合绿色 | 四虎成人精品| 国产SUV精品一区二区6| 亚洲精品无码高潮喷水A| 国产欧美高清| 久久人妻xunleige无码| 青青国产成人免费精品视频| 呦女亚洲一区精品| 91娇喘视频| 巨熟乳波霸若妻中文观看免费| 毛片基地视频| 中日韩一区二区三区中文免费视频| 中文字幕无码av专区久久| 少妇高潮惨叫久久久久久| 国产三级a| 亚洲成网777777国产精品| 国产哺乳奶水91在线播放| 国产成人精品男人的天堂| 国产视频你懂得| 国产免费羞羞视频| 日韩在线视频网站| 久久亚洲欧美综合| 日韩成人在线视频| 69综合网| 亚洲男人的天堂在线| 亚洲二区视频| 成人一级黄色毛片| 午夜国产理论| 免费国产黄线在线观看| 中文字幕在线日韩91|