web-dev-qa-db-ja.com

美しいスープは特定のdivの子供を見つける

Python-> Beautiful Soupを使用して、次のようなWebページを解析しようとしています。enter image description here

ハイライトされたtd divの内容を抽出しようとしています。現在、私はすべてのdivを取得することができます

alltd = soup.findAll('td')


for td in alltd:
    print td

しかし、まだ30+を返しますが、300 +よりも管理しやすいクラス "tablebox"のtdsを検索するために、その範囲を狭めようとしています。

上の図で強調表示されているtdの内容を抽出するにはどうすればよいですか?

31
Nick

BeautifulSoupが1つの要素内で見つけた要素は、親要素と同じ型を保持していることを知っておくと便利です。つまり、さまざまなメソッドを呼び出すことができます。

したがって、これはあなたの例のやや機能するコードです:

soup = BeautifulSoup(html)
divTag = soup.find_all("div", {"class": "tablebox"}):

for tag in divTag:
    tdTags = tag.find_all("td", {"class": "align-right"})
    for tag in tdTags:
        print tag.text

これにより、「tablebox」クラスの親divを持つ「align-right」クラスのすべてのtdタグのすべてのテキストが印刷されます。

55
Bo Milanovich