首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python中的漂亮汤从带有" data -reactid“的"span”标记中抓取数据?

如何使用python中的漂亮汤从带有" data -reactid“的"span”标记中抓取数据?
EN

Stack Overflow用户
提问于 2019-04-08 13:13:46
回答 4查看 1.5K关注 0票数 3

我正在尝试从雅虎财经中提取股票的实时价格数据。该信息包含在带有"class“和"data-reactid”"span“标签中。我无法从这个span标记中提取信息。

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

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

代码语言:javascript
运行
复制
<--HTML Code-->
<span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="34">197.00</span>
代码语言:javascript
运行
复制
#Python Script
my_url = "https://finance.yahoo.com/quote/AAPL?p=AAPL&.tsrc=fin-srch"
u_client = u_req(my_url)

page_html = u_client.read()
u_client.close()

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

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

EN

回答 4

Stack Overflow用户

发布于 2019-04-08 15:52:24

你可以通过多种方式来获取它。以下是其中之一:

代码语言:javascript
运行
复制
import requests
from bs4 import BeautifulSoup

res = requests.get('https://finance.yahoo.com/quote/AAPL')
soup = BeautifulSoup(res.text, 'lxml')
price = soup.select_one('#quote-market-notice').find_all_previous()[2].text
print(price)

另一种方式:

代码语言:javascript
运行
复制
price = soup.select_one("[class*='smartphone_Mt'] span").text
print(price)
票数 3
EN

Stack Overflow用户

发布于 2019-04-08 13:38:38

不知怎么的,当读取url时,data-reactid变成了14。

代码语言:javascript
运行
复制
page_soup = soup(page_html, "html.parser")
container = page_soup.find('span', {"data-reactid":'14'})
if container:
    print(container.text)
票数 1
EN

Stack Overflow用户

发布于 2019-04-08 13:59:24

鉴于data-reactid可以更改,我将使用唯一的类进行选择。按类选择也更快。

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55566627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档