Python 如何使用BeautifulSoup提取数据ID为的范围内容?

Python 如何使用BeautifulSoup提取数据ID为的范围内容?,python,beautifulsoup,Python,Beautifulsoup,我想从雅虎财经网站提取市值 我曾经 from bs4 import BeautifulSoup import requests url='https://finance.yahoo.com/quote/TXG?p=TXG&.tsrc=fin-srch' wb_data=requests.get(url) soup=BeautifulSoup(wb_data.text,'lxml') cap = soup.find("span", class_ = "Trsdu(0.3s) ").get_

我想从雅虎财经网站提取市值

我曾经

from bs4 import BeautifulSoup
import requests
url='https://finance.yahoo.com/quote/TXG?p=TXG&.tsrc=fin-srch'
wb_data=requests.get(url)
soup=BeautifulSoup(wb_data.text,'lxml')
cap = soup.find("span", class_ = "Trsdu(0.3s) ").get_text()
print(cap)
但我得到了80.81,这是之前的收盘价,而不是8.01B。这是因为上一个收盘价共享同一个类别。因此,我尝试使用数据ID来限制搜索。如何做到这一点

我得到了答案,但它太奇怪了,它是attrs={data reactid:57}而不是139

试试这个:

from bs4 import BeautifulSoup
import requests
url='https://finance.yahoo.com/quote/TXG?p=TXG&.tsrc=fin-srch'
wb_data=requests.get(url)
soup=BeautifulSoup(wb_data.text,'lxml')
cap = soup.find("span", class_ = "Trsdu(0.3s) ").get('data-reactid')
print(cap)
find函数将任何未知关键字参数视为属性过滤器,因此要查找id属性为foo的元素,您需要编写:

soup.find(id = "foo")
不能直接将数据类用作关键字参数,因为连字符使其在Python中成为非法标识符。但是美丽的乌苏:


请注意,依赖React ID可能非常脆弱,因此最好依赖周围的元素,如市值标签。

谢谢。当使用cap=soup.findspan,class=Trsdu0.3s,attrs={data reactid:139}时,我得到的“NoneType”对象没有属性“get_text”。get_text太令人惊讶了,它是attrs={data reactid:57}而不是139!您在浏览器的开发工具中看到的不一定是服务器发送的原始HTML。抱歉,数据ID应该是139I Get 16。为什么不指定数据ID的编号?
cap = soup.find("span", class_ = "Trsdu(0.3s) ", attrs = {"data-reactid": "85"})