Python天氣預報採集器實現代碼(網頁爬蟲)

來源:互聯網
上載者:User

爬蟲簡單說來包括兩個步驟:獲得網頁文本、過濾得到資料。
   1、獲得html文本。
  python在擷取html方面十分方便,寥寥數行代碼就可以實現我們需要的功能。 複製代碼 代碼如下:def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
page.close()
return html

這麼幾行代碼相信不用注釋都能大概知道它的意思。

  2、根據Regex等獲得需要的內容。

  使用Regex時需要仔細觀察該網頁資訊的結構,並寫出正確的Regex。
  pythonRegex的使用也很簡潔。我的上一篇文章《Python的一些用法》介紹了一點正則的用法。這裡需要一個新的用法: 複製代碼 代碼如下:def getWeather(html):
reg = '<a title=.*?>(.*?)</a>.*?<span>(.*?)</span>.*?<b>(.*?)</b>'
weatherList = re.compile(reg).findall(html)
return weatherList

其中reg是Regex,html是第一步獲得的文本。findall的作用是找到html中所有符合正則匹配的字串並存放到weatherList中。之後再枚舉weatheList中的資料輸出即可。
  這裡的Regexreg有兩個地方要注意。
  一個是“(.*?)”。只要是()中的內容都是我們將要獲得的內容,如果有多個括弧,那麼findall的每個結果就都包含這幾個括弧中的內容。上面有三個括弧,分別對應城市、最低溫和最高溫。
  另一個是“.*?”。python的正則匹配預設是貪婪的,即預設儘可能多地匹配字串。如果在末尾加上問號,則表示非貪婪模式,即儘可能少地匹配字串。在這裡,由於有多個城市的資訊需要匹配,所以需要使用非貪婪模式,否則匹配結果只剩下一個,且是不正確的。
  
  python的使用確實十分方便:)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.