如何按顺序获取所有元素文本

时间:2016-01-22 03:51:11

标签: javascript python html beautifulsoup bs4

我使用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个序列?我试过下面的

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

如果我只使用find("td"),我只得到一个值而不是表中的所有值。 我如何遍历"td"并为每个元素获取"div"

2 个答案:

答案 0 :(得分:2)

有一种更简单,更简洁的方式 - docs

[elm.get_text() for elm in soup.select("table.table_class tr td div")]

答案 1 :(得分:1)

每当遇到涉及iterables / iterators的问题时,请查看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"))]