我正在将python3.6与XPath库一起使用。桌子内爬行给我一个空列表。并且需要爬到特定的位置。
我的tr内容是动态生成的。我需要爬到具有特定th值的tr上。示例在HTML代码中,排名出现在第二个tr中,但它可以出现在tr中的任何位置。它没有特定的索引。需要从具有排名th的tr获得href。
我的html文件:
Long
Python代码:
<tbody>
<tr>
<th class="a-color-secondary a-size-base prodDetSectionEntry">
Product Number
</th>
<td class="a-size-base">
B003NR57BY
</td>
</tr>
<tr>
<th class="a-color-secondary a-size-base prodDetSectionEntry">
Rank
</th>
<td>
<span>
<span>#3 in <a href="/gp/bestsellers/pc/11036491/ref=pd_zg_hrsr_pc_1_1_last">Computer Mice</a></span>
<br>
</span>
</td>
</tr>
<tr>
<th class="a-color-secondary a-size-base prodDetSectionEntry">
Created Date
</th>
<td class="a-size-base">
June 7, 2010
</td>
</tr>
</tbody>
</table>
我希望输出为
listings_details = parser.xpath(XPATH_PRODUCT_DETAILS)
for row in listings_details:
th = row.xpath("./th/text()")
if th[0].strip() == 'Rank':
categories = row.xpath("./td/span/span//text()")
qid_url= row.xpath("./td/span/span//@href")
答案 0 :(得分:2)
需要从具有排名th的tr获得href。
使用:
/table/tbody/tr[normalize-space(th)='Rank']/td//a/@href
注意:这适用于您提供的片段(格式良好)。您以后需要添加上下文来选择table
元素。
<table>
<tbody>
<tr>
<th class="a-color-secondary a-size-base prodDetSectionEntry">Product Number</th>
<td class="a-size-base">B003NR57BY</td>
</tr>
<tr>
<th class="a-color-secondary a-size-base prodDetSectionEntry">Rank</th>
<td>
<span>
<span>#3 in
<a href="/gp/bestsellers/pc/11036491/ref=pd_zg_hrsr_pc_1_1_last">Computer Mice</a>
</span>
<br/>
</span>
</td>
</tr>
<tr>
<th class="a-color-secondary a-size-base prodDetSectionEntry">Created Date</th>
<td class="a-size-base">June 7, 2010</td>
</tr>
</tbody>
</table>
在http://www.xpathtester.com/xpath/53808ee94dfbc5b38f12791cf857ffb9中测试