Как получить все элементы текста в последовательном порядке
Я получаю текст из таблицы, используя 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"
2 ответа
Решение
Всякий раз, когда у вас есть проблема с использованием итераторов / итераторов, посмотрите в 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"))]
Существует более простой и лаконичный способ - селектор CSS:
[elm.get_text() for elm in soup.select("table.table_class tr td div")]