Scrapy无法返回引用,因为它占用了2行

时间:2019-03-03 05:59:14

标签: xpath scrapy

表的第一行很容易被刮擦,因为标题“ P / E Ratio(TTM)”整齐地写在一行上。表格的其他各行,我似乎无法刮scrap,因为“市盈率高-最近5年”。占用2行,我不知道如何引用它。 “市盈率最低-最近5年”也是如此。

<tr class="stripe">
        <td>P/E Ratio (TTM)</td>
        <td class="data">11.39</td>
        <td class="data">87.22</td>
        <td class="data">19.22</td>
    </tr>
<tr>
        <td>
           P/E High - Last 5 Yrs.</td>
        <td class="data">34.48</td>
        <td class="data">114.12</td>
        <td class="data">24.22</td>
    </tr>
<tr class="stripe">
        <td>              
          P/E Low - Last 5 Yrs.</td>
        <td class="data">10.54</td>
        <td class="data">12.02</td>
        <td class="data">11.39</td>
    </tr>

我正在尝试返回此表中的数字。到目前为止,我能工作的是:

response.xpath("//td[./preceding-sibling::td[1]='P/E Ratio (TTM)']//text()").extract()
response.xpath("//td[./preceding-sibling::td[2]='P/E Ratio (TTM)']//text()").extract()
response.xpath("//td[./preceding-sibling::td[3]='P/E Ratio (TTM)']//text()").extract()

我有一种感觉,我想念这里很明显的东西。这是该站点的链接:https://www.reuters.com/finance/stocks/financial-highlights/AB

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用如下所示的xpath来访问<td>下的<tr>文字,如

  

本益比高-最近5年。

所提及的

//tr[td[normalize-space()='P/E High - Last 5 Yrs.']]/td[2]
//tr[td[normalize-space()='P/E High - Last 5 Yrs.']]/td[3]
//tr[td[normalize-space()='P/E High - Last 5 Yrs.']]/td[4]

normalize-space()修剪文本两端的空格,以便即使它分散在多行中也可以匹配它