表的第一行很容易被刮擦,因为标题“ 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
任何帮助将不胜感激。谢谢!
答案 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()
修剪文本两端的空格,以便即使它分散在多行中也可以匹配它