<p>我希望你的问题更具体一点:你是专门用煎饼交换来决定价格的。但你的问题根本没有提到</p>
<p>无论如何,我知道使用web3.py从PancakeSwap获取报价的两种方法:</p>
<ol>
<li>使用<a href="https://github.com/pancakeswap/pancake-info-api/blob/develop/v2-documentation.md" rel="nofollow noreferrer">their API</a></李>
</ol>
<pre><code>import requests
def calcSell(tokenAddress):
apiURL = "https://api.pancakeswap.info/api/v2/tokens/"
response = requests.get(url = apiURL + tokenAddress)
price = extractPriceFromRaw(response)
return price
def extractPriceFromRaw(response):
jsonRaw = response.json()
price = jsonRaw['data']['price']
return price
CAKE = '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82'
print(calcSell(KRW))
</code></pre>
<ol start=“2”>
<li>直接使用智能合约的.getAmountsOut()函数。你想做什么</李>
</ol>
<pre><code>from web3 import Web3
def calcSell(tokenAddress):
routerContract = web3.eth.contract(address=routerPCS, abi=pancakeSwapAbi)
oneToken = web3.toWei(1, 'Ether')
price = routerContract.functions.getAmountsOut(oneToken, [tokenAddress, BUSD]).call()
normalizedPrice = web3.fromWei(price[1], 'Ether')
return normalizedPrice
web3 = Web3(Web3.HTTPProvider('https://bsc-dataseed1.binance.org:443'))
routerPCS = '0x10ED43C718714eb63d5aA57B78B54704E256024E'
BUSD = '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56'
CAKE = '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82'
print(calcSell(CAKE))
</code></pre>
<p>我没有试着调试您的代码,但我假设您的问题是因为您折磨<code>tokenToSell</code>值的方式,而不是简单地使它等于1:<code>tokenToSell = web3.toWei(1, 'Ether')</code></p>