我为target_html
绘制了简单的结构:
table--div--tr[id="tr1"]
|--tr[id="tr2"]
|--tr[id="tr3"]
|--tr[id="tr4"]
使用lxml从目标_html提取第一个tr
target_html="""
<table id="t1">
<div id="div1">
<tr id="tr1">
<td>11</td>
<td>12</td>
</tr>
</div>
<tr id="tr2">
<td>21</td>
<td>22</td>
</tr>
<tr id="tr3">
<td>31</td>
<td>32</td>
</tr>
<tr id="tr4">
<td>41</td>
<td>42</td>
</tr>
</table> """
doc=lxml.html.fromstring(target_html)
for item in doc.xpath('//tr[1]'):
print(item.text_content())
由lxml解析的Expexted结果:
11
12
lxml解析的实际结果:
11
12
21
22
为什么两个tr被解析为tr[1]
xpath
//tr[1]
表示选择作为其父元素的第一个子元素(具有该名称)的任何tr
元素选择以下
tr
是因为它是div
的第一个tr
子级:选择以下
tr
是因为它是table
的第一个tr
子级:要获取第一个匹配项,请首先将xpath括在括号中
相关问题 更多 >
编程相关推荐