2008-10-18 2 views
2

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

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

ответ

2

Есть ли какой-либо причине

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

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

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

0

Ну, вы знаете, что компьютеры всегда правы. Ответ заключается в том, что attrs находятся на разных вещах в 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> 

Других места в файле, где стиль = "граница дна и т.д. выглядеть следующим образом:

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

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

0

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

Смежные вопросы