Python 雅虎的HTML刮刀!使用lxml和请求返回错误值的财务
如果我写了[@data reactid=“92”],上面输出了预期的结果,结果是2075.74。有人知道为什么会这样吗?我期望得到81.48,这可以在AMZN股票的源代码中看到Python 雅虎的HTML刮刀!使用lxml和请求返回错误值的财务,python,html,request,lxml,Python,Html,Request,Lxml,如果我写了[@data reactid=“92”],上面输出了预期的结果,结果是2075.74。有人知道为什么会这样吗?我期望得到81.48,这可以在AMZN股票的源代码中看到 编辑:我发现了一些奇怪的东西。。我在HTML脚本中看到的结果始终是26。所以当我使用[@data reactid=“66”]时,我得到了我想要的东西。同样,118-92=26。这一情况延续到其他几个案例中。你知道为什么吗?看起来是个bug?数据ID值按升序排序,与相应跨距的文本值不匹配。因此,跨距的文本值是按文档顺序打印
编辑:我发现了一些奇怪的东西。。我在HTML脚本中看到的结果始终是26。所以当我使用[@data reactid=“66”]时,我得到了我想要的东西。同样,118-92=26。这一情况延续到其他几个案例中。你知道为什么吗?看起来是个bug?数据ID值按升序排序,与相应跨距的文本值不匹配。因此,跨距的文本值是按文档顺序打印的,而数据ID值是按顺序排序的,因此它们的匹配不正确。IE 15返回1636.40,实际上是41
from lxml import html
import requests
page = requests.get('https://finance.yahoo.com/quote/AMZN?p=AMZN&.tsrc=fin-srch')
tree = html.fromstring(page.content)
peRatio = tree.xpath('//span[@class="Trsdu(0.3s) "] [@data-reactid="92"]/text()')
peRatio
看起来像只虫子。您可以省略该类,只需执行数据reactid,它就会给出错误的答案。您对html的阅读是正确的。
<span class="Trsdu(0.3s) " data-reactid="41">1,636.40</span>
print(tree.xpath('//span[@class="Trsdu(0.3s) "]/text()'))
print(tree.xpath('//span[@class="Trsdu(0.3s) "]/@data-reactid'))
['1,636.40', '1,628.18', '1,639.00 x 900', '1,640.25 x 900', '3,148,824', '6,293,333', '806.108B', '1.71', '81.48', '20.14', 'N/A', '2,075.74']
['15', '20', '25', '30', '43', '48', '56', '61', '66', '71', '87', '92']