我正在自学python,目前正试图从Binance(https://www.binance.com/en/trade/LTC_USDT)获得加密货币的最新价格。价格的HTML如下图所示:image
上图中显示的HTML代码位于网站上:code location
如您所见,Html代码中的两个地方都提到了LTC的价格(当前约为43美元)。
第一个位置的类地址根据价格变化根据文字颜色在3个地址之间变化,如下所示:
红色文本(价格下降)>>>>> class =“ sc-1p4en3j-3 sc-1p4en3j-5 jFILqo”
绿色文本(价格上涨)>>>>> class =“ sc-1p4en3j-3 sc-1p4en3j-4 kZlsgN”
纯白文本(无单词框)>>>> class =“ sc-1p4en3j-3 sc-1p4en3j-6 czKdcJ”
第二个价格位置的类地址固定为,但包含$符号。
我想获取股票价格并进行存储,以便以后可以进行数学计算。我尝试使用两个文本位置来获取价格。我的代码:
url= "https://www.binance.com/en/trade/LTC_USDT"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
试图从位置1的所有类中获取价格:
newprice= soup.find('span', class_ = 'sc-1p4en3j-3 sc-1p4en3j-5 jFILqo')
newprice1= soup.find('span', class_ = 'sc-1p4en3j-3 sc-1p4en3j-4 kZlsgN')
newprice2= soup.find('span', class_ = 'sc-1p4en3j-3 sc-1p4en3j-6 czKdcJ')
print (str(newprice))
print (str(newprice1))
print (str(newprice2))
如果我将.text
添加到上面的第一三行。它告诉我:“ NoneType”对象没有属性“ text”
试图从位置2获取它:
newprice3= soup.find('span', class_ = 'sc-1p4en3j-7 eHDQUL')
print (str(newprice3))
输出:
None
None
None
None
答案 0 :(得分:3)
您不能使用BeautifulSoup直接从网站上获取价格,因为它是使用javascript生成并通过网络套接字进行更新的,因此您应该使用免费的Binance API。
这是一个检索LTCUSDT
价格的示例:
import requests
url = "https://api.binance.com/api/v3/ticker/price?symbol=LTCUSDT"
resp = requests.get(url).json()
price = resp['price']
# 43.45000000