HTML парсинг Python
Есть таблица html, нужно преобразовать её в двумерный массив
Написал вот такой код чтобы получить ячейки таблицы:
content = driver.find_element("xpath", '//*[@class="123"]')
html = content.get_attribute('outerHTML')
table_data = [row for row in BeautifulSoup(html)("tr")]
for i in table_data:
for j in i:
print(j)
На выходе получаю 6 строк(первую разделил, чтобы дерево понятнее было визуально):
<td class="i1 i3 i4">
<div>
<a class="" href="https://url.ru" target="blank">
<div class="styles_1">QQQQ</div>
</a>
<div class="styles_1">WWWW</div>
</div>
</td>
<td class="i1 i3 i4"><div><div class="styles_1">XXXX</div><div class="styles_2">CCCC</div></div></td>
<td class="i2 i3 i4"><div>12345</div></td>
<td class="i2 i3 i4"><div>12345</div></td>
<td class="i2 i3 i4"><div>12345</div></td>
<td class="i2 i3 i4"><div>12345</div></td>
Если вывести текст получаю:
for i in table_data:
for j in i:
print(j.text)
QQQQWWWW
XXXXCCCC
12345
12345
12345
12345
Хочу получить
[https://url.ru, QQQQ, WWWW]
[XXXX, CCCC]
12345
12345
12345
12345
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
from bs4 import BeautifulSoup
html = '''
<td class="i1 i3 i4">
<div>
<a class="" href="https://url.ru" target="blank">
<div class="styles_1">QQQQ</div>
</a>
<div class="styles_1">WWWW</div>
</div>
</td>
<td class="i1 i3 i4"><div><div class="styles_1">XXXX</div><div class="styles_2">CCCC</div></div></td>
<td class="i2 i3 i4"><div>12345</div></td>
<td class="i2 i3 i4"><div>12345</div></td>
<td class="i2 i3 i4"><div>12345</div></td>
<td class="i2 i3 i4"><div>12345</div></td>
'''
i = BeautifulSoup(html, "lxml")
a11, a12, a21, a22, *a3 = i.stripped_strings
a1 = [i.a['href'], a11, a12]
a2 = [a21, a22]
print(a1, a2, *a3, '', sep="\n")
# ['https://url.ru', 'QQQQ', 'WWWW']
# ['XXXX', 'CCCC']
# 12345
# 12345
# 12345
# 12345