Как получить список детей, использующих xpath? - PullRequest
0 голосов
/ 08 ноября 2019

Есть элемент таблицы, в котором есть элементы tr. Хотя каждый элемент tr содержит элемент td.

<table>
<tr>
<td> some data </td>
<td> other data </td>
</tr>
</table>

Я хотел получить текст из элементов td попарно. Но я готов сделать это с помощью xpath.

Итак, я получил элемент tr из дерева lxml в одной переменной, применив xpath. Затем применил xpath, чтобы получить элементы td из этой переменной. Но я получил все элементы td из таблицы, и я хотел ограничить элементы td только из этой переменной!

table = parsed.xpath("//table")
trElementFirst = table.xpath("/tr")[0]
tdElementsFromFirstTr = trElementFirst.xpath("/td")

Я хотел получить список элементов td только для первого элемента tr. Но я получаю список всех элементов td из таблицы.

1 Ответ

0 голосов
/ 08 ноября 2019

tdElementsFromFirstTr = trElementFirst.xpath("//td") захватывает все td

import lxml.html as html


htmlStr = '''<table>
<tr>
<td> some data </td>
<td> other data </td>
</tr>

<tr>
<td> NO </td>
<td> OTHER NO </td>
</tr>

</table>'''

parsed = html.fromstring(htmlStr)

table = parsed.xpath("//table")
trElementFirst = table[0].xpath("tr")[0]  
tdElementsFromFirstTr = trElementFirst.xpath("td")

for each in tdElementsFromFirstTr:
    print (each.text)

Вывод:

some data 
other data 
...