Я хочу использовать BeautifulSoup для разбора некоторых HMTL. У меня есть таблица с несколькими строками. Я пытаюсь найти строку, которая соответствует определенным условиям (определенные значения атрибутов), и использовать индекс этой строки позже в моем коде.Does BeautifulSoup find_all() сохранить заказ тега?
Вопрос: find_all()
сохранить порядок моих строк в результирующем наборе, который он возвращает?
я не нашел это в docs и Googling получил меня только this answer:
'BeautifulSoup теги не отслеживать их порядок на странице, нет.
, но он не говорит, откуда он получил эту информацию.
Я был бы доволен ответом, но еще более доволен указателем на документацию, которая объясняет это.
Редактировать: dstudeba указал мне в направлении этого «обходного пути», используя next_sibling
.
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('./mytable.html'), 'html.parser')
row = soup.find('tr', {'class':'something', 'someattr':'somevalue'})
myvalues = []
while True:
cell = row.find('td', {'someattr':'cellspecificvalue'})
myvalues.append(cell.get_text())
row = row.find_next_sibling('tr', {'class':'something', 'someattr':'somevalue'})
if not row:
break
Это доставит мне содержимое ячейки, в которой я нуждаюсь, в порядке их появления в моем html-файле.
Однако я все еще хотел бы знать, где в документах BeautifulSoup я мог найти, сохраняет ли заказ find_all()
или нет. Вот почему я не принимаю ответ dstudeba. (мой upvote не показывает, не хватает репутации: P)
Извините, что не вернулись к вам раньше. Я читал о find_next, просто не получил его полностью (не носитель английского языка). Я попробую! –