Как найти все ячейки с определенным атрибутом в BeautifulSoup? - PullRequest
2 голосов
/ 19 октября 2008

Я пытаюсь разработать скрипт для извлечения некоторых данных из большого количества HTML-таблиц. Одна проблема заключается в том, что количество строк, содержащих информацию для создания заголовков столбцов, является неопределенным. Я обнаружил, что последняя строка набора строк заголовка имеет атрибут border-bottom для каждой ячейки со значением. Таким образом я решил найти те ячейки с атрибутом border-bottom. Как видите, я инициализировал список. Я намеревался найти родителя каждой из ячеек, попадающих в список borderCells. Однако, когда я запускаю этот код, в список borderCells добавляется только одна ячейка, то есть первая ячейка в allCells с атрибутом border-bottom. Для вашего сведения, у allCells есть 193 ячейки, 9 из них имеют атрибут attr border-bottom. Таким образом, я ожидал девять участников в списке borderCells. Любая помощь приветствуется.

borderCells=[]
for each in allCells:
if each.find(attrs={"style": re.compile("border-bottom")}):
    borderCells.append(each)

Ответы [ 3 ]

2 голосов
/ 19 октября 2008

Есть ли причина

borderCells = soup.findAll("td", style=re.compile("border-bottom")})

не сработает? Трудно точно понять, о чем вы просите, поскольку ваше описание исходных таблиц довольно неоднозначно, и не совсем понятно, каким должен быть allCells.

Я бы предложил привести репрезентативный образец HTML, с которым вы работаете, вместе с «правильными» результатами, извлеченными из этой таблицы.

0 голосов
/ 19 октября 2008

Кто-то забрал один из их ответов, хотя я проверил его, и он сработал для меня. Спасибо за помощь. Оба ответа сработали, и я узнал немного больше о том, как отправлять вопросы, и после того, как я некоторое время смотрю на код, я могу узнать больше о Python и BeautifulSoup

0 голосов
/ 19 октября 2008

Ну, вы знаете, компьютеры всегда правы. Ответ заключается в том, что атрибуты относятся к разным вещам в HTML. Что я моделировал на каком-то html, который выглядел так:

<TD nowrap align="left" valign="bottom">
<DIV style="border-bottom: 1px solid #000000; width: 1%; padding-bottom: 1px">
<B>Name</B>
</DIV>
</TD>

Другие места в файле, где style = "border-bottom и т. Д., Выглядят так:

<TD colspan="2" nowrap align="center" valign="bottom" style="border-bottom: 1px solid 00000">
<B>Location</B>
</TD>

так что теперь мне нужно изменить вопрос, чтобы выяснить, как определить те ячейки, где attr находится на уровне td, а не на уровне div *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...