如何解决使用 BeautifulSoup 在网站上查找特定值
我正在制作一个检查 DogeCoin 价格的 discord 机器人,为此我决定使用 BeautifulSoup 来检查以下网站上的价格(包括货币,在本例中为欧元):https://www.tradingview.com/symbols/DOGEEUR/?exchange=BINANCE .我想得到的价格是立即低于 DOGECOIN/EURO [binance symbol] BINANCE
不过,我是 BeautifulSoup 的新手,对 Python 有非常基本的了解和经验,所以这对我来说是一个很大的挑战。
有没有办法将硬币 + EUR 的值存储到字符串变量中?
我尝试使用以下代码作为参考,但即使使用教程也无法获得任何结果。
def get_crypto_price(coin):
#Get the URL
url = "https://www.google.com/search?q="+coin+"+price"
#Make a request to the website
HTML = requests.get(url)
#Parse the HTML
soup = BeautifulSoup(HTML.text,'html.parser')
#Find the current price
#text = soup.find("div",attrs={'class':'BNeawe iBp4i AP7Wnd'}).text
text = soup.find("div",attrs={'class':'BNeawe iBp4i AP7Wnd'}).find("div",attrs={'class':'BNeawe iBp4i AP7Wnd'}).text
#Return the text
return text
#Create a main function to consistently show the price of the cryptocurrency
def main():
#Set the last price to negative one
last_price = -1
#Create an infinite loop to continuously show the price
while True:
#Choose the cryptocurrency that you want to get the price of (e.g. bitcoin,litecoin)
crypto = 'bitcoin'
#Get the price of the crypto currency
price = get_crypto_price()
#Check if the price changed
if price != last_price:
last_price = price #Update the last price
return price
time.sleep(3) #Suspend execution for 3 seconds.
解决方法
此处记录的价格似乎有一个公共 API:https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md#general-api-information
从所有(较少请求)中获取特定项目的示例:
import requests
def get_price(symbol,prices):
for price in prices:
if symbol == price['symbol']:
return price['price']
prices = requests.get('https://api.binance.com/api/v3/ticker/price').json()
print(get_price('DOGEEUR',prices))
根据文档,有一个符号参数可以检索单个股票的最新价格。
编辑:@Mike Malyi 正确指出[如果只对单个项目感兴趣)-
最好添加一个符号作为查询
https://api.binance.com/api/v3/ticker/price?symbol=DOGETH
它会节省币安权重点,并减少币安的大小 请求。
,您需要在调用函数时传递加密名称。
crypto = 'bitcoin'
#Get the price of the crypto currency
price = get_crypto_price(crypto)
请更新它返回的价格为“32,46,044.24 印度卢比”
并且因为您将它与需要执行操作以从中获取数字的数字进行比较。
price = float(price.replace(",","").split()[0])
这将返回您的数字价格:3255838.53
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。