国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python天氣預(yù)報(bào)采集器實(shí)現(xiàn)代碼(網(wǎng)頁爬蟲)

2019-11-25 18:42:02
字體:
供稿:網(wǎng)友
爬蟲簡單說來包括兩個(gè)步驟:獲得網(wǎng)頁文本、過濾得到數(shù)據(jù)。
  1、獲得html文本。
  python在獲取html方面十分方便,寥寥數(shù)行代碼就可以實(shí)現(xiàn)我們需要的功能。
復(fù)制代碼 代碼如下:

def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
page.close()
return html

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

  2、根據(jù)正則表達(dá)式等獲得需要的內(nèi)容。

  使用正則表達(dá)式時(shí)需要仔細(xì)觀察該網(wǎng)頁信息的結(jié)構(gòu),并寫出正確的正則表達(dá)式。
  python正則表達(dá)式的使用也很簡潔。我的上一篇文章《Python的一些用法》介紹了一點(diǎn)正則的用法。這里需要一個(gè)新的用法:
復(fù)制代碼 代碼如下:

def getWeather(html):
reg = '<a title=.*?>(.*?)</a>.*?<span>(.*?)</span>.*?<b>(.*?)</b>'
weatherList = re.compile(reg).findall(html)
return weatherList

其中reg是正則表達(dá)式,html是第一步獲得的文本。findall的作用是找到html中所有符合正則匹配的字符串并存放到weatherList中。之后再枚舉weatheList中的數(shù)據(jù)輸出即可。
  這里的正則表達(dá)式reg有兩個(gè)地方要注意。
  一個(gè)是“(.*?)”。只要是()中的內(nèi)容都是我們將要獲得的內(nèi)容,如果有多個(gè)括號(hào),那么findall的每個(gè)結(jié)果就都包含這幾個(gè)括號(hào)中的內(nèi)容。上面有三個(gè)括號(hào),分別對(duì)應(yīng)城市、最低溫和最高溫。
  另一個(gè)是“.*?”。python的正則匹配默認(rèn)是貪婪的,即默認(rèn)盡可能多地匹配字符串。如果在末尾加上問號(hào),則表示非貪婪模式,即盡可能少地匹配字符串。在這里,由于有多個(gè)城市的信息需要匹配,所以需要使用非貪婪模式,否則匹配結(jié)果只剩下一個(gè),且是不正確的。
  
  python的使用確實(shí)十分方便:)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹东市| 故城县| 龙海市| 竹溪县| 封丘县| 哈密市| 儋州市| 义乌市| 利川市| 玉屏| 武城县| 彰化县| 永顺县| 环江| 合川市| 阜平县| 古田县| 田林县| 彭州市| 徐州市| 商南县| 志丹县| 原平市| 嘉峪关市| 和静县| 罗定市| 宜兴市| 西城区| 日喀则市| 绩溪县| 芒康县| 额济纳旗| 齐齐哈尔市| 文安县| 武隆县| 云梦县| 福清市| 永靖县| 远安县| 太原市| 神农架林区|