このサイトから次の3つのデータポイントを取得したいと思います:%verified、FARの数値、およびPODの数値。私はBeautifulSoupでこれを実行しようとしていますが、サイトトラバースの練習をしていないため、これらの要素の場所を説明することはできません。
これを行う最も簡単な方法は何ですか?
このサイトから次の3つのデータポイントを取得したいと思います:%verified、FARの数値、およびPODの数値。私はBeautifulSoupでこれを実行しようとしていますが、サイトトラバースの練習をしていないため、これらの要素の場所を説明することはできません。
これを行う最も簡単な方法は何ですか?
まだインストールしていない場合は、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
ここから、私が提供したリンクは、興味のある要素を取得する方法の良いスタートを切るはずです。
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
Notelxml.html.soupparser
はパーサーとほとんど同じですBeautifulSoup
(現時点では手渡す必要はありません)。
私はそれを自分で解決することになりました-私は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])