2017-07-26 88 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! –