Python簡單兩步驟實現天氣爬蟲採集器

高洛峰
發布: 2016-10-18 14:01:19
原創
1341 人瀏覽過

說爬蟲大家或許感覺非常神秘,其實它沒有我們想像的那麼神奇(當然,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 = &#39;<a title=.*?>(.*?)</a>.*?<span>(.*?)</span>.*?<b>(.*?)</b>&#39;
weatherList = re.compile(reg).findall(html)
return weatherList
登入後複製

說明:

其中reg是正規表示式,html是第一步獲得的文字。 findall的作用是找到html中所有符合正規符合的字串並存放到weatherList。之後再列舉weatheList中的資料輸出即可。

這裡的正規表示式reg有兩個地方要注意。

一個是「(.*?)」。只要是()中的內容都是我們將要獲得的內容,如果有多個括號,那麼findall的每個結果就都包含這幾個括號中的內容。上面有三個括號,分別對應城市、最溫和最高溫。

另一個是「.*?」。 python的正規匹配預設是貪婪的,即預設盡可能多地匹配字串。如果在末尾加上問號,則表示非貪婪模式,即盡可能少地匹配字串。在這裡,由於有多個城市的資訊需要匹配,所以需要使用非貪婪模式,否則匹配結果只剩下一個,且是不正確的。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板