0

このサイトから次の3つのデータポイントを取得したいと思います:%verified、FARの数値、およびPODの数値。私はBeautifulSoupでこれを実行しようとしていますが、サイトトラバースの練習をしていないため、これらの要素の場所を説明することはできません。

これを行う最も簡単な方法は何ですか?

4

3 に答える 3

2

まだインストールしていない場合は、Firefox用のFirebugをインストールし、それを使用してページのhtmlソースを調べます。

urllibBeautifulSoupの組み合わせを使用して、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&ltype[]=T&wind=58'
fp = urllib.urlopen(url).read()
soup = BeautifulSoup(fp)

print soup

ここから、私が提供したリンクは、興味のある要素を取得する方法の良いスタートを切るはずです。

于 2013-02-01T18:22:59.677 に答える
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

Notelxml.html.soupparserはパーサーとほとんど同じですBeautifulSoup(現時点では手渡す必要はありません)。

于 2013-02-01T18:40:04.483 に答える
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&ltype%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])
于 2013-02-01T19:12:01.410 に答える