数据ID为的Python BeautifulSoup查找

数据ID为的Python BeautifulSoup查找,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,我试图从雅虎金融(Yahoo Finance)那里获得一些股票价格,但没有得到想要的结果229.30,而是收到了“邮件”。有人知道为什么吗 from bs4 import BeautifulSoup import requests import sys from datetime import datetime, timedelta import pandas as pd code = input("Enter the NYSE stock symbol: ") #Your Choice S

我试图从雅虎金融(Yahoo Finance)那里获得一些股票价格,但没有得到想要的结果229.30,而是收到了“邮件”。有人知道为什么吗

from bs4 import BeautifulSoup
import requests
import sys
from datetime import datetime, timedelta
import pandas as pd

code = input("Enter the NYSE stock symbol: ")

#Your Choice Stock
source = requests.get('https://finance.yahoo.com/quote/'+ code +'/history p='+ code).text
soup = BeautifulSoup(source, 'lxml')
price = soup.find('span', attrs={"data-reactid": "55"}
print(code + " stock: " + price.text)
另外,忽略所有其他导入,它们是我的大文件的一部分

编辑:现在它至少给了我一个号码,但那个号码不是我要找的号码。它给我231.12分,而不是229.30分。另外,我得到的股票是好市多的。(成本为纽约证券交易所股票代码)


另一次编辑:出于某种原因,它读取的数据是57,而不是55。我尝试使用53,它给了我55的值。为什么前面有两个数据ID?

我试图访问代码中显示的url,然后被重定向到
https://finance.yahoo.com/lookup?s=COSTCO
。我检查了表中的元素,发现您的标记错误。将
span
更改为
td
,一切顺利

from bs4 import BeautifulSoup
import requests
import sys
from datetime import datetime, timedelta
import pandas as pd

code = "Costco" #input("Enter the NYSE stock symbol: ")

#Your Choice Stock
url = "https://finance.yahoo.com/lookup?s={}".format(code)
print(url)
source = requests.get(url).text
soup = BeautifulSoup(source, 'lxml')
symbol = soup.find('td', attrs={"data-reactid": "57"}) # 57+8*n
name = soup.find('td', attrs={"data-reactid": "58"}) # 58+8*n
price = soup.find('td', attrs={"data-reactid": "59"}) # 59+8*n
print(code + " stock: " + price.text)

print(pd.read_html(url))
输出:

https://finance.yahoo.com/lookup?s=Costco
Costco stock: 231.02
[       Symbol                             Name   ...       Type Exchange
0        COST     Costco Wholesale Corporation   ...     Stocks      NMS
1     COST.MX            COSTCO WHOLESALE CORP   ...     Stocks      MEX
2      CTO.DU         COSTCO WHOLESALE DL-,005   ...     Stocks      DUS
3      CTO.SG  COSTCO WHOLESALE CORP. Register   ...     Stocks      STU
4      CTO.MU         COSTCO WHOLESALE DL-,005   ...     Stocks      MUN
5     COST.VI            COSTCO WHOLESALE CORP   ...     Stocks      VIE
6      CTO.HM         COSTCO WHOLESALE DL-,005   ...     Stocks      HAM
7      CTO.BE         COSTCO WHOLESALE DL-,005   ...     Stocks      BER
8       CTO.F         COSTCO WHOLESALE DL-,005   ...     Stocks      FRA
9      0I47.L  COSTCO WHOLESALE CORP COSTCO WH   ...     Stocks      LSE
10  COWC34.SA                 COSTCO WHOLESALE   ...     Stocks      SAO

[11 rows x 6 columns]]

data reactid
是动态的最新价格,更容易从表日期历史记录列5获取数据
close*

price = soup.select('table td')
print(code + " stock: " + price[4].text)
如果您查看页面源代码,就会看到Json格式的有趣数据

root.App.main = {..}
解析后选择它

price = jsonData["context"]["dispatcher"]["stores"]["QuoteSummaryStore"]["price"]["regularMarketPrice"]["raw"]