Python簡單兩步實現天氣爬蟲採集器
說道爬蟲大家或許感覺非常神祕,其實它沒有我們想象的那麼神奇(當然,google和baidu的爬蟲是一場複雜和強大的,它的強大不是爬蟲本身強大,而是後臺的資料處理和資料探勘演算法非常強大),今天我們就來揭開它神祕的面紗。呵呵,簡單兩步就可以實現一個網頁天氣爬蟲程式。。。
爬蟲簡單說來包括 兩個部分 : 1.獲得網頁文字資訊。2.資料分析,獲取其中我們想要的資料。
1、獲得網頁文字資訊。
python在獲取html方面十分方便,有了urllib庫的幫助,只需要幾行程式碼就可以實現我們需要的功能。
#引入urllib庫 import urllib def getHtml(url): page= urllib.urlopen(url) html= page.read() page.close() return html
這裡返回的就是網頁的原始碼,也就是html程式碼。
那我們如何從中得到我們想要的資訊呢?那就需要用到在網頁分析裡面最最常用的工具 - 正則表示式 了。
2、根據正則表示式等獲得需要的內容。
使用正則表示式時需要仔細觀察該網頁資訊的結構,並寫出正確的正則表示式。
python正則表示式的使用也很簡潔:
#引入正則表示式庫 import re def getWeather(html): reg= '(.*?).*?(.*?).*?(.*?)' weatherList= re.compile(reg).findall(html) return weatherList
學習Python中的小夥伴,需要學習資料的話,可以前往我的微信公眾號:速學Python,後臺回覆:簡書,即可拿Python學習資料
這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python指令碼到web開發、爬蟲、資料分析、資料視覺化、機器學習等。送給正在學習python的小夥伴!這裡是python學習者聚集地,歡迎初學和進階中的小夥伴!
說明:
其中reg是正則表示式,html是第一步獲得的文字。findall的作用是找到html中所有符合正則匹配的字串並存放到weatherList中。之後再列舉weatheList中的資料輸出即可。
這裡的正則表示式reg有兩個地方要注意。
一個是“(.*?)”。只要是()中的內容都是我們將要獲得的內容,如果有多個括號,那麼findall的每個結果就都包含這幾個括號中的內容。上面有三個括號,分別對應城市、最低溫和最高溫。
另一個是“.*?”。python的正則匹配預設是貪婪的,即預設儘可能多地匹配字串。如果在末尾加上問號,則表示非貪婪模式,即儘可能少地匹配字串。在這裡,由於有多個城市的資訊需要匹配,所以需要使用非貪婪模式,否則匹配結果只剩下一個,且是不正確的。
