xpath - IndexError: list index out of range

xpath - IndexError: list index out of range

如何使用 Xpath 检索包含在以下代码中的端口号 (4145)? :

<tr>
<td data-label="IP:port ">
 <span class="labelText">IP:port </span>
 <span>
  <input type="checkbox" name="proxyIp[]" value="202.57.33.134|r4883">
 </span>
 202.57.33.134:
 <span class="r4883">4145</span>
</td>
[more <td></td> ... ]
</tr>

我最后一次尝试出错了:

print(i.xpath('.//td[1]/span[3]/text()')[0]) IndexError: list index out of range

我不得不稍微更改一下您的示例 XML,存储到以下示例中的 test.xml 中:

<tr>
<td data-label="IP:port ">
 <span class="labelText">IP:port </span>
 <span>
  <input type="checkbox" name="proxyIp[]" value="202.57.33.134|r4883"></input>
 </span>
 <span class="r4883">4145</span>
</td>
</tr>

然后,在执行这个脚本的时候,终端会打印出值4145

import xml.etree.ElementTree as et

root = et.parse("test.xml")

print(root.findall(".//td[1]/span[3]")[0].text)

如您所见,text 是在 XPath /td[1]/span[3].

中找到的元素的属性

您问题中的xml无效; <input> 节点未正确关闭。如果你关闭它(@hintze 在他的回答中所做的方式),除了他的建议之外,你还可以使用这个 xpath 表达式:

//tr/td//span[@class="r4883"]