我有几个关于python的问题

2024-09-30 01:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作python脚本,它从bscscan.com获取数据,并在终端中显示给我

想法:当我输入代币的合同地址时,我想获得该合同地址的详细信息,代码如下

我的第一个问题是如何获得mcapa的正确数据mcapa显示错误信息,如 这是121048美元,而不是121048400.00美元

第二个问题是totalbox显示“121000000busd(CSupply:95562821.092145)”及其正确性,但我只想得到“121000000busd”

我不知道该怎么做:/I我尝试了剥离和剥离,但我没有得到我想要的信息

谢谢你的建议

import requests
from bs4 import BeautifulSoup

#print holders
cotractpage = requests.get("https://bscscan.com/token/0xe9e7cea3dedca5984780bafc599bd69add087d56")
soupa = BeautifulSoup(cotractpage.content, 'html.parser')
tokenholders = soupa.find(id='ContentPlaceHolder1_tr_tokenHolders').get_text()
tokenholdersa = "Holders: " + ((((tokenholders.strip()).strip("Holders:")).strip()).strip(" a ")).strip()
print(tokenholdersa)

#print decimal
decimal = soupa.find(id='ContentPlaceHolder1_trDecimals').get_text()
decimala = "Decimal: " + ((((decimal.strip()).strip("Decimals:")).strip()).strip()).strip()
print(decimala)

#print website
website = soupa.find(id='ContentPlaceHolder1_tr_officialsite_1').get_text()
websitea = "Website: " + ((((website.strip()).strip(" Official Site:")).strip()).strip()).strip()
print(websitea)

#print name
website = soupa.find('span', class_='text-secondary small').get_text()
tokename = "Name: " + website
print(tokename)

#printprice
price = soupa.find(id='ContentPlaceHolder1_tr_valuepertoken')
pricebox = price.find('span', class_='d-block').get_text()
print("Price: " + (pricebox).strip())

#print marketcap
mcap = soupa.find(id='ContentPlaceHolder1_tr_valuepertoken').get_text()
mcapa = ((((mcap.strip()).strip("Price")).strip(pricebox)).strip("Market Cap")).strip()
print("Market Cap: " + mcapa)

#print totalsupply
totalbox = soupa.find('div', class_='col-md-8').get_text()
print("Total Supply: " + totalbox)

Tags: textidgetwebsitefindtrclassdecimal
1条回答
网友
1楼 · 发布于 2024-09-30 01:29:59

您的脚本几乎正确,只是做了一些小的调整:

import re
import requests
from bs4 import BeautifulSoup


#print holders
cotractpage = requests.get("https://bscscan.com/token/0xe9e7cea3dedca5984780bafc599bd69add087d56")
soupa = BeautifulSoup(cotractpage.content, 'html.parser')
tokenholders = soupa.find(id='ContentPlaceHolder1_tr_tokenHolders').get_text()
tokenholdersa = "Holders: " + ((((tokenholders.strip()).strip("Holders:")).strip()).strip(" a ")).strip()
print(tokenholdersa)

#print decimal
decimal = soupa.find(id='ContentPlaceHolder1_trDecimals').get_text()
decimala = "Decimal: " + ((((decimal.strip()).strip("Decimals:")).strip()).strip()).strip()
print(decimala)

#print website
website = soupa.find(id='ContentPlaceHolder1_tr_officialsite_1').get_text()
websitea = "Website: " + ((((website.strip()).strip(" Official Site:")).strip()).strip()).strip()
print(websitea)

#print name
website = soupa.find('span', class_='text-secondary small').get_text()
tokename = "Name: " + website
print(tokename)

#printprice
price = soupa.find(id='ContentPlaceHolder1_tr_valuepertoken')
pricebox = price.find('span', class_='d-block').get_text()
print("Price: " + (pricebox).strip())

#print marketcap
mcapa = soupa.find(id='ContentPlaceHolder1_tr_valuepertoken').get_text()
print("Market Cap: " + re.search(r'Market Cap.*?([$\d,.]+)', mcapa, flags=re.S).group(1))   # < - we want only amount after "Market Cap"

#print totalsupply
totalbox = soupa.find('div', class_='col-md-8').get_text().split('(')[0].strip()   # < - we want only first part of the string
print("Total Supply: " + totalbox)

印刷品:

Holders: 8,040
Decimal: 18
Website: https://www.paxos.com/busd/
Name: Binance-Peg BUSD Token
Price: $1.0004 @ 0.032597 BNB (+0.02%)
Market Cap: $121,048,400.00
Total Supply: 121,000,000 BUSD

或者如果您不想对mcap使用正则表达式:

#print marketcap
mcapa = soupa.find(id='ContentPlaceHolder1_tr_valuepertoken').find(id='pricebutton').get_text(strip=True)
print("Market Cap: " + mcapa)

相关问题 更多 >

    热门问题