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
→ Ссылка