1

bs4を使用してテーブルからテキストを取得しています

soup = BeautifulSoup(html_text)
table = soup.find("table", attrs={"class":"table_class"})

headings = [i.get_text() for i in table.find("tr").find_all("td")]

しかし、どうすれば2つのfindallを順番に持つことができますか? 私は以下を試しました

headings = [i.get_text() for i in table.find("tr").find_all("td").find_all("div")]

使用するfind("td")だけでは、テーブルからすべての値ではなく、1 つの値のみを取得します。どのようにループし"td"てすべての要素を取得できますか"div"

4

2 に答える 2

2

よりシンプルで簡潔な方法があります - CSS セレクター:

[elm.get_text() for elm in soup.select("table.table_class tr td div")]
于 2016-01-22T04:33:26.560 に答える
1

イテラブル/イテレータに関連する問題があるときはいつでも、 itertools を調べてください。

from itertools import chain

headings = [i.get_text() for i in chain.from_iterable(x.find_all("div") for x in table.find("tr").find_all("td"))]
于 2016-01-22T03:58:13.933 に答える