Я пытаюсь извлечь информацию из таблицы с помощью bs4 и python. , когда я использую следующий код для извлечения информации из заголовка таблицы:Извлечение информации из таблицы, кроме заголовка таблицы с помощью bs4
tr_header=table.findAll("tr")[0]
tds_in_header = [td.get_text() for td in tr_header.findAll("td")]
header_items= [data.encode('utf-8') for data in tds_in_header]
len_table_header = len (header_items)
Он работает, но для следующих кодов, которые я пытаюсь извлечь информацию из первой строки в конец таблицы:
tr_all=table.findAll("tr")[1:]
tds_all = [td.get_text() for td in tr_all.findAll("td")]
table_info= [data.encode('utf-8') for data in tds_all]
Существует следующая ошибка:
AttributeError: 'list' object has no attribute 'findAll'
Может кто-нибудь помочь мне, чтобы изменить его.
Это таблица информация:
<table class="codes"><tr><td><b>Code</b>
</td><td><b>Display</b></td><td><b>Definition</b></td>
</tr><tr><td>active<a name="active"> </a></td>
<td>Active</td><td>This account is active and may be used.</td></tr>
<tr><td>inactive<a name="inactive"> </a></td>
<td>Inactive</td><td>This account is inactive
and should not be used to track financial information.</td></tr></table>
Это выход для tr_all:
[<tr><td><b>Code</b></td><td><b>Display</b></td><td><b>Definition</b></td></tr>, <tr><td>active<a name="active"> </a></td><td>Active</td><td>This account is active and may be used.</td></tr>, <tr><td>inactive<a name="inactive"> </a></td><td>Inactive</td><td>This account is inactive and should not be used to track financial information.</td></tr>]
Возможно, вам стоит написать html-код. Вы пытаетесь разобрать. Более того, поскольку 'tr_header' является единственным элементом bs4, вы можете вызвать findAll на нем. Но для списка строк (и это то, что вы, вероятно, получаете из 'tr_all'), вам нужно вызвать findAll для каждого элемента, не входящего в весь список (используя двойное понимание списка или лучше - отдельно для цикла - для чтения) – JustMe
@JustMe, благодаря вы ! Даже для этого кода tr_all = table.findAll («tr») я все равно получаю список, но для этого: tr_header = table.findAll («tr») [0] Я не получаю список. Я совершенно смущен. У меня есть еще один вопрос. Возможно ли отредактировать этот код, чтобы добавить информацию таблицы из первой строки в конец таблицы: table_information = [td.get_text() для td в table.findAll ("td")]. Благодаря ! – Mary