尝试通过变量的xpath提取值,但未获得正确的结果

时间:2019-01-08 10:23:30

标签: xpath scrapy

我正在尝试通过xpath获取此值。

enter image description here

<td width="50%" class="col">
<table class="item" cellpadding="0" cellspacing="0">
<tr>
  <th>Area (m²)</th>
  <td class="value">
    <strong>165</strong>
  </td>
</tr>

我正在尝试获取实际的整数值(165)

这是我通过调试工具获得的xpath

/html/body/div[4]/section/div/div/div[2]/div[1]/div[1]/div[2]/div[3]/table/tbody/tr[2]/td[2]/table/tbody/tr/td/strong

我正在尝试收集有关此房源的信息,并且试图获取公寓的区域。我已经试过了从调试器获得的xpath,但是我总是得到一个空字符串或一个错误,该错误提示您无法将xpath选择器转换为字符串。不知道在哪里可以得到165的值。

请,您能提供的任何输入,我已经看了几天。

area = response.xpath('/html/body/div[4]/section/div/div/div[2]/div[1]/div[1]/div[2]/div[3]/table/tbody/tr[2]/td[2]/table/tbody/tr/td/strong')
print(area)
通过这个xpath,我期望165,但是我什么也没得到。我刚得到这个[]

2 个答案:

答案 0 :(得分:1)

尝试使用相对的XPath而不是绝对的:

area = response.xpath('//td[@class="value"]/strong')
print(area)

area = response.xpath('//th[.="Area (m²)"]/following-sibling::td/strong')
print(area)

答案 1 :(得分:0)

尝试使用:

xpath = '//table.item/tr[contains(., "Area")]/td//text()'

//相对路径选择

table.item选择具有item类的表

tr[contains(., "Area")]检查所有带有文本“区域”的trs

td//text()(对于具有文本“区域”的tr,请选择td中的tr,然后 //text()提取每个文本。大概是165。