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

How to get all elements text in sequential order

本文关键字:元素 文本 获取 何按 顺序      更新时间:2023-09-26

我使用 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"

有一个更简单、更简洁的方法——一个 CSS 选择器:

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

每当遇到涉及可迭代对象/迭代器的问题时,请查看迭代工具。

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"))]