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.

主站蜘蛛池模板: 国产午夜一级淫片| 色综合久久88色综合天天提莫| 欧美综合成人| 毛片在线播放网址| 亚洲αv毛片| 国产人成乱码视频免费观看| 亚洲一区毛片| 欧美日韩中文国产va另类| 亚洲大尺码专区影院| 日韩天堂网| 99一级毛片| 欧美综合激情| 欧美一区二区啪啪| 国产免费羞羞视频| 国产69精品久久久久孕妇大杂乱 | 看国产一级毛片| 久久无码av一区二区三区| 国产麻豆福利av在线播放| 波多野结衣AV无码久久一区| 国产精品大尺度尺度视频| jizz亚洲高清在线观看| 亚洲第一页在线观看| 免费国产高清视频| 18黑白丝水手服自慰喷水网站| 99久久精品国产自免费| 欧美在线视频a| 久久精品66| 91青青草视频| 91娇喘视频| 永久在线精品免费视频观看| 午夜老司机永久免费看片| 又爽又大又光又色的午夜视频| 亚洲美女操| 亚洲视频无码| 精品三级在线| 九九免费观看全部免费视频| 国产超薄肉色丝袜网站| 亚洲三级片在线看| 日韩高清欧美| 伊人色天堂| 中文字幕伦视频| 久久这里只有精品8| 91精品啪在线观看国产60岁| 国产麻豆精品手机在线观看| 欧美成人精品一级在线观看| 综合网久久| 国产无码高清视频不卡| 丝袜无码一区二区三区| 欧美一区二区精品久久久| 精品视频91| 亚洲精品不卡午夜精品| 国产亚洲视频中文字幕视频| 国内自拍久第一页| 一级毛片在线播放免费| 欧美啪啪视频免码| 国产久操视频| 亚洲综合久久一本伊一区| 成人综合在线观看| 亚洲精品福利视频| 国产精品视频3p| 亚洲中文字幕av无码区| 国产无遮挡猛进猛出免费软件| 一级做a爰片久久毛片毛片| 国产免费羞羞视频| 四虎国产精品永久在线网址| 亚洲中文制服丝袜欧美精品| 成色7777精品在线| 毛片久久网站小视频| 国产高清免费午夜在线视频| 这里只有精品在线| 在线无码九区| 欧美亚洲另类在线观看| 国产精品免费露脸视频| 国产高清在线精品一区二区三区| 国产精品无码AV中文| 9丨情侣偷在线精品国产| 久久精品国产电影| 久久久受www免费人成| 亚洲免费黄色网| 在线色国产| 免费看一级毛片波多结衣| 伊人久久久久久久久久|