2017-07-26 58 views
0

所以我有一个脚本,检查股票价格。雅虎改变了一些东西,现在我得到了%的变化而不是股价。以下是原始脚本。当我运行它时,我得到“+0.70(+ 0.03%)”,而不是2,477.83。唯一的区别我真正看到的是:进口雅式财务股票价格与beautifulsoup和请求

数据reactid = “36”

数据reactid = “35”。

当我更改为35时,它失败。 36个作品,但只显示%变化。我想要股票价格,而不是%变化。

感谢您的帮助!

import urllib.request 
from bs4 import BeautifulSoup 


# S&P 500 
page = urllib.request.urlopen("https://finance.yahoo.com/quote/%5EGSPC?p=^GSPC") 
content = page.read().decode('utf-8') 
soup = BeautifulSoup(content, 'html.parser') 
valsp = soup.find("span", {"data-reactid": "36"}).decode_contents(formatter="html") 
print(valsp) 

回答

1

有多个span元素的属性data-reactid =“35”,所以选择一个你想要的class属性。

import urllib.request 
from bs4 import BeautifulSoup 

# S&P 500 
page = urllib.request.urlopen("https://finance.yahoo.com/quote/%5EGSPC?p=^GSPC") 
content = page.read().decode('utf-8') 
soup = BeautifulSoup(content, 'html.parser') 
# print (soup) 
valsp = soup.find("span", {"data-reactid": "35", "class" : "Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)"}).decode_contents(formatter="html") 
print(valsp) 

输出:

2,477.83 

唯一的变化是这行代码:

valsp = soup.find("span", {"data-reactid":"35"}).decode_contents(formatter="html") 

valsp = soup.find("span", {"data-reactid": "35", "class" : "Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)"}).decode_contents(formatter="html") 
+0

THANK YOU SO MUCH! –