Мне нужно получить данные таблицы HTML в виде списков.Таблица имеет 100 столбцов и 50 строк.Не каждый <td>
имеет текстовое значение, и каждая строка отличается от других (нет текстового значения в разных столбцах)
Поэтому, когда я использую row.text
, он возвращает список, игнорируя тот, у которого нет текста.список каждой строки имеет разную длину.Это не хорошо для написания списка в файле Excel.
Если я сделаю это один <td>
по одному <td>
, чтобы сформировать список.Это слишком медленно.
for row in driver.find_elements(By.XPATH, '//table[@id="mytable"]/tbody/tr')
print(row.text)
html
<table id='mytable'>
<tbody>
<tr>
<td>abc</td>
<td></td>
<td><a href='javascript:...'>cbd</a></td>
</tr>
<tr>
<td>ttt</td>
<td>bbb</td>
<td></td>
</tr>
<tbody>
</table>
Использование BeautifulSoup
from bs4 import BeautifulSoup
soup = BeautitulSoup(driver.find_element(By.XPATH, '//table[@id="mytable"]/tbody').get_attribute('innerHTML'), features='lxml')
for tr in soup.find_all('tr'):
list = ([text for text in tr.strings])
print(list)
Я все еще получаю список вроде ['abc', 'cbd'], мне нужно получить список как ['abc', '', 'cbd']