我想从this site中删除以下三个数据点:已验证的%,FAR的数值以及POD的数值。我试图在BeautifulSoup中这样做,但我没有在网站遍历中练习,所以我无法描述这些元素的位置。
最简单的方法是做什么?
答案 0 :(得分:2)
如果您还没有,请为Firefox安装Firebug并使用它来检查页面的html源。
使用urllib
和BeautifulSoup的组合来处理html检索和解析。这是一个简短的例子:
import urllib
from BeautifulSoup import BeautifulSoup
url = 'http://mesonet.agron.iastate.edu/cow/?syear=2009&smonth=9&sday=12&shour=12&eyear=2012&emonth=9&eday=12&ehour=12&wfo=ABQ&wtype[]=TO&hail=1.00&lsrbuffer=15<ype[]=T&wind=58'
fp = urllib.urlopen(url).read()
soup = BeautifulSoup(fp)
print soup
从这里开始,我提供的链接应该为您提供如何检索您感兴趣的元素的良好开端。
答案 1 :(得分:1)
如同That1Guy所说,您需要分析源页面结构。在这种情况下,你很幸运...你正在寻找的数字是使用<span>
以红色突出显示的。
这样做:
>>> import urllib2
>>> import lxml.html
>>> url = ... # put your URL here
>>> html = urllib2.urlopen(url)
>>> soup = lxml.html.soupparser.fromstring(html)
>>> elements = soup.xpath('//th/span')
>>> print float(elements[0].text) # FAR
0.67
>>> print float(elements[1].text) # POD
0.58
注意lxml.html.soupparser
几乎等同于BeautifulSoup
解析器(我目前无需提供)。
答案 2 :(得分:1)
我最终解决了这个问题 - 我正在使用类似于isedev的策略,但我希望我能找到更好的方法来获取'已验证'数据:
import urllib2
from bs4 import BeautifulSoup
wfo = list()
def main():
wfo = [i.strip() for i in open('C:\Python27\wfo.txt') if i[:-1]]
soup = BeautifulSoup(urllib2.urlopen('http://mesonet.agron.iastate.edu/cow/?syear=2009&smonth=9&sday=12&shour=12&eyear=2012&emonth=9&eday=12&ehour=12&wfo=ABQ&wtype%5B%5D=TO&hail=1.00&lsrbuffer=15<ype%5B%5D=T&wind=58').read())
elements = soup.find_all("span")
find_verify = soup.find_all('th')
far= float(elements[1].text)
pod= float(elements[2].text)
verified = (find_verify[13].text[:-1])