如何在python中使用beautifulsoup从带有“datareactid”的“span”标记中获取数据?

2024-05-28 19:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从雅虎财经中提取股票的实时价格数据。此信息包含在带有“class”和“datareactid”的“span”标记中。我无法从这个span标记中提取信息。在

当我输入代码时,我没有得到任何输出,也没有得到任何错误。在

我几乎尝试过这个问题的所有其他答案,但没有一个对我有效。在

<--HTML Code-->
<span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="34">197.00</span>
^{pr2}$

我想得到“197.00”(股票的实时价格)的输出作为输出。在


Tags: 数据答案代码标记信息html错误code
3条回答

在读取url时,不知何故,数据reactid被更改为14。在

page_soup = soup(page_html, "html.parser")
container = page_soup.find('span', {"data-reactid":'14'})
if container:
    print(container.text)

我用chrome打开了URL,然后按了F12。单击network选项卡显示了来自页面的查询:https://query1.finance.yahoo.com/v8/finance/chart/AAPL?region=US&lang=en-US&includePrePost=false&interval=2m&range=1d&corsDomain=finance.yahoo.com&.tsrc=finance

我建议研究底层的AJAX调用,这些调用似乎呈现了一个格式良好的JSON结果,并查看URL中可以修改的许多参数。在

鉴于数据reactid可以更改,我将使用一个唯一的类来选择。按类选择也更快。在

import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://finance.yahoo.com/quote/AAPL/')
soup = bs(r.content, 'lxml')
print(soup.select_one('.Mb\(-4px\)').text)

相关问题 更多 >

    热门问题