的xpath()返回空列表[]

问题描述 投票:0回答:1

XPath返回下列查询空列表。需要获取UrlOne1,UrlOne2,DataOne1,DataOne,DataOne2

<table>
<thead></thead>
<tbody class="dataContainer">
    <tr class="tableLight"> 
        <td><a href="UrlOne1" class="ClassOne1">DataOne1</a></td>
        <td> <a href="UrlOne2"><span class="badge"></span> <span class="long">DataOne</span> <span class="short">DataOne</span> </a> </td>
        <td class="hide-s"><span class="ClassOneCN"></span> <span class="ClassOne2">DataOne2</span></td></tr>
    <tr class="tableLight">
    <tr class="tableLight">
    <tr class="tableLight">

返回null []以下

response.xpath('//*[@class="dataContainer"]/a/@href') 
response.xpath('//*[@class="tableLight"]')
response.xpath('//*[local-name() = "tr" and class="tableLight"]') 

但下面的代码工作正常回答:'>]

response.xpath('//*[@class="dataContainer"]') 
python xml xpath
1个回答
1
投票

对于第一个XPath //*[@class="dataContainer"]/a/@href

//是后代或自身轴线而/是当前节点的直接子。在这种情况下a不是直接孩子,所以你需要使用//

//*[@class="dataContainer"]//a/@href

第二条路径//*[@class="tableLight"]应该工作,但如果你知道它是一个tr标签使用它:

//tr[@class="tableLight"]

而对于第三XPath的//*[local-name() = "tr" and class="tableLight"] class是一个属性,所以你需要使用@class(但我会建议使用上面的XPath代替):

//*[local-name() = "tr" and @class="tableLight"]

至于你,你需要什么(UrlOne1, UrlOne2, DataOne1, DataOne, DataOne2),你可以得到a元素,像这样response.xpath('//tr[@class="tableLight"]//a')然后检索每个href元素a属性或文本。 或者直接将href属性和文本:

//tr[@class="tableLight"]//a/@href
//tr[@class="tableLight"]//a//text()
© www.soinside.com 2019 - 2024. All rights reserved.