gpt4 book ai didi

python - 雅虎 HTML 抓取工具! Finance 使用 lxml 和 requests 返回错误值

转载 作者:行者123 更新时间:2023-11-30 21:58:27 26 4
gpt4 key购买 nike

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

如果我写了 [@data-reactid="92"] ,上面的输出就是预期的结果,它给了我 2,075.74。有谁知道为什么会发生这种情况?我预计会得到 81.48,这可以在 AMZN 股票的源代码中看到。

编辑:我发现了一些奇怪的东西..我在 HTML 脚本中看到的内容始终偏离 26。所以当我使用 [@data-reactid="66"] 时,我得到了我正在寻找的东西。同样,118-92 = 26。这也适用于其他几个案例。有什么想法吗?

最佳答案

看起来是一个错误? data-reactid 值按升序排序,并且与相应范围的文本值不匹配。因此,span 的文本值按文档顺序打印,而 data-reactid 值则排序,然后它们匹配不正确。 IE 15 返回 1,636.40,实际上是 41。

<span class="Trsdu(0.3s) " data-reactid="41">1,636.40</span>

我正在检查我的旧代码,看看我们是否可以修复您的 xpath 以使其正常工作。这是我如何看待这个问题的。如果我找到合适的解决方案,我会在几个小时内更新,如果其他人有答案,我会删除它。

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']

关于python - 雅虎 HTML 抓取工具! Finance 使用 lxml 和 requests 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54916913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com