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"]
如何使用 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"]