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"),我只会得到一个值,而不是表中的所有值。我如何循环遍历"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 回答