2

私はこの種のページから情報を取得しようとしています。

、、の下Internshipに含まれる情報が必要です。テーブルから値を抽出することはできますが、この場合、見出し(のような)がテーブルの外側のタグの下に単純なプレーンテキストとして存在し、その後、必要な値のテーブルが存在するため、使用するテーブルを決定できませんでした抽出します。そして、私はこの種のページをたくさん持っています、そして、いくつかのページがまったく存在しないかもしれないように、各ページがこれらの値を持っている必要はありません。(これにより、ページ内のテーブルの総数が減少します)。そのようなページの一例はこれです。このページにはまったく存在しません。ResidencyFellowshipInternshipdivResidencyInternship

私が直面している主な問題は、すべてのテーブルが同じ属性値を持っているため、異なるページにどのテーブルを使用するかを決定できないことです。関心のある値がページに存在しない場合は、その値に対して空の文字列を返す必要があります。

PythonでBeautifulSoupを使用しています。誰かが指摘できますか、どうすればそれらの値を抽出することができますか?

4

1 に答える 1

1

見出しとデータのIDには、それぞれ固有の値と標準のサフィックスがあるようです。これを使用して、適切な値を検索できます。これが私の解決策です:

from BeautifulSoup import BeautifulSoup

# Insert whatever networking stuff you're doing here. I'm going to assume
# that you've already downloaded the page and assigned it to a variable 
# named 'html'

soup = BeautifulSoup(html)
headings = ['Internship', 'Residency', 'Fellowship']
values = []
for heading in headings:
    x = soup.find('span', text=heading)
    if x:
        span_id = x.parent['id']
        table_id = span_id.replace('dnnTITLE_lblTitle', 'Display_HtmlHolder')        
        values.append(soup.find('td', attrs={'id': table_id}).text)
    else:
        values.append('')

print zip(headings, values)
于 2013-02-19T02:48:53.670 に答える