WEB SCRAPING:正则表达式没有返回任何东西?我究竟做错了什么?

时间:2014-11-27 17:55:48

标签: python regex web-scraping urllib

我正在尝试编写一个使用" urllib"的python脚本。和"重新"图书馆从html页面中提取天气预报信息,但我似乎无法获得任何值,有人可以帮助我吗?

import urllib
import re

url = ('http://www.metoffice.gov.uk/public/weather/forecast/gcptz5sys')

htmlfile = urllib.urlopen(url)

htmltext = htmlfile.read()

regex =('<span title="Maximum daytime temperature" data-c="10" data-f="50">(.+?)<sup>°C</sup></span>')

pattern = re.compile(regex)

temp = re.findall(pattern,htmltext)

print (temp)

我顺便使用Python 2.7 ......

1 个答案:

答案 0 :(得分:1)

试试这个:

#!/usr/bin/env python    

import urllib                                                                                                  
import re                                                                                                      


def main():                                                                                                    
    url = ('http://www.metoffice.gov.uk/public/weather/forecast/gcptz5sys')     

    htmlfile = urllib.urlopen(url)                                                                             

    htmltext = htmlfile.read()                                                                                 

    htmltext = str(htmltext).replace('\n', '')                                                                 
    htmltext = str(htmltext).replace('\t', '')                                                                 
    htmltext = str(htmltext).replace(' ', '') 

    pattern = re.compile('<spantitle="Maximumdaytimetemperature"data-c="7"data-f="45">(?P<temperature>.+?)<sup>&deg;C</sup></span>') 

    for match in pattern.finditer(htmltext):                                                                   
        print match.group('temperature')                                                                       

if __name__ == "__main__":                                                                                     
    main() 

所以我在这里做了什么:

  1. 下载内容
  2. 删除所有换行符
  3. 删除所有标签
  4. 删除所有空格字符
  5. 我创建并编译正则表达式模式,其中group&#39; temperature&#39;将用于检索温度(注意:正则表达式剂量注释包含空格或新行)
  6. 使用finditer函数迭代匹配的元素并将其打印到控制台。
  7. P.S。:我删除了所有的空格字符,因为它可以在后端动态更改,每次都应该更改正则表达式。通过删除所有空格和换行符,可以避免此问题。