使用PYTHON从网页捕获数据

时间:2017-02-24 20:26:27

标签: python xml web-scraping

我想从下面的链接中捕获文本并保存。 http://forecast.weather.gov/product.php?site=NWS&issuedby=FWD&product=RR5&format=CI&version=44&glossary=0

我只需要在 .A 之后保存文本,所以我不需要页面中的其他文本。此外,页面顶部有50个不同的链接,我想从所有链接中获取所有数据。

我已经编写了下面的代码,但它什么都没有返回,具体如何才能获得我需要的部分?

import urllib
import re
htmlfile=urllib.urlopen("http://forecast.weather.gov/product.php?site=NWS&issuedby=FWD&product=RR5&format=CI&version=1&glossary=0")
htmltext=htmlfile.read()
regex='<pre class="glossaryProduct">(.+?)</pre>'
pattern=re.compile(regex)
out=re.findall(pattern, htmltext)
print (out)

我还使用了以下内容返回页面的所有内容:

import urllib
file1 = urllib.urlopen('http://forecast.weather.gov/product.php?site=NWS&issuedby=FWD&product=RR5&format=txt&version=1&glossary=0')
s1 = file1.read()
print(s1)

你能帮我这么做吗?

1 个答案:

答案 0 :(得分:1)

您的正则表达式没有捕获任何内容,因为您的内容以换行符开头,并且您未启用.包含换行符。如果将编译行更改为

pattern=re.compile(regex,re.S)

它应该有用。

您也可以查看:

https://regex101.com

它显示了你的正则表达式正在做什么。当我把S标志放在右侧时,它开始正常工作:

Image of regex working with the S flag