如何从 YieldWatch 中获取“净资产”?

问题描述 投票:0回答:4

我想按照以下方式抓取网站:

  1. 前往产量观察
  2. 在地址文本框中输入
    0xF54274757Bf717B1ab52bA0d3a7CbF635f856a0d
    ,然后单击双筒望远镜
  3. 刮掉“净资产”下的文字enter image description here

我正在 Python 中使用 Selenium 来尝试执行此操作,这是我迄今为止的尝试:

from selenium.webdriver import Safari  # pip install selenium
from selenium.webdriver.support.ui import WebDriverWait

url = 'https://www.yieldwatch.net/'
bsc_public_key = '0xF54274757Bf717B1ab52bA0d3a7CbF635f856a0d'

# with closing(Safari()) as browser:
browser = Safari()
browser.get(url)

textbox = browser.find_element_by_id('addressInputField')
textbox.clear()
textbox.send_keys(bsc_public_key)

button = browser.find_element_by_class_name('binoculars icon')
button.click()

# # wait for the page to load
WebDriverWait(browser, timeout=20).until(
    lambda x: x.find_element_by_id('ui centered image'))

# store it to string variable
page_source = browser.page_source
print(page_source)

该代码不起作用。 浏览器加载后,我看不到填写地址的文本框。 我怎样才能在Python中做到这一点(有或没有Selenium)?

python selenium web-scraping
4个回答
4
投票

你并不真的需要

selenium
的重枪。您可以从API端点获取所有数据。

具体方法如下:

import requests

wallet = "0xF54274757Bf717B1ab52bA0d3a7CbF635f856a0d"
endpoint = f"https://www.yieldwatch.net/api/all/{wallet}?platforms=beefy,pancake,hyperjump,auto,mdex"

wallet_data = requests.get(endpoint).json()["result"]

# https://yieldwatch.medium.com/yieldwatch-faqs-93c2cde244bf
# Net Value = Total Deposit + Total Yield + Wallet Balance — Total Debt
total = sum(v["totalUSDValues"]["total"] for v in wallet_data["PancakeSwap"].values())
net_worth = total + wallet_data["walletBalance"]["totalUSDValue"]
print(f"Net worth for {wallet}:\n{round(net_worth, 2)}")

这将输出最新的净资产:

Net worth for 0xF54274757Bf717B1ab52bA0d3a7CbF635f856a0d:
2213.13

注意:常见问题解答说您需要

Total Debt
来计算净值,但这个钱包没有任何债务,所以我没有在等式中包含该值。

但是,如果你的钱包有债务,请分享,我会更新答案。


0
投票

您正在尝试读取

ui centered image
元素文本,但它仍未显示最终值。
尝试等待
invisibility_of_element_located(By.XPATH,"//div[@class='content']//div[@class='header']")

然后才从
ui centered image
元素读取文本。


0
投票
from selenium.webdriver import Safari
from selenium.webdriver.common.by import By
import time

url = 'https://www.yieldwatch.net/'
address = input('Enter Your Wallet Address : ')
browser = Safari()
browser.get(url)

btnpancake = browser.find_element(By.XPATH, value="//*[@id='root']/div/div/div[1]/div/div/div[4]/div/div[4]/div/img")
btnpancake.click()

wallet = browser.find_element(By.ID, "addressInputField")
wallet.clear()
wallet.send_keys(address)

send = browser.find_element(By.XPATH, value="//*[@id='root']/div/div/div[1]/div/div/div[1]/div/div[2]/button[1]")
send.click()

time.sleep(7)

pool = browser.find_element(By.XPATH, value="//*[@id='root']/div/div/div[2]/div[3]/div/div/div[2]/div/div/div[2]/div/div/div/div/div[1]/div[1]/h4/div[2]")
poolval = pool.text
value = poolval.split(' ')
print(f"Current Pool : {value[0]}")
print(f"Total Cake Value : {value[2]}")

earn = browser.find_element(By.XPATH, value="//*[@id='root']/div/div/div[2]/div[3]/div/div/div[2]/div/div/div[2]/div/div/div/div/div[2]/table/tbody/tr[1]/td[2]")
earnval = earn.text
value2 = earnval.split(' ')
print(f"Total Cake : {value2[0]}")
print(f"Pending {value2[3]} : {value2[2]}")
print(f"Harvest : {value2[4]+' '+value2[5]}")

totalyield = browser.find_element(By.XPATH, value="//*[@id='root']/div/div/div[2]/div[2]/div/div/div/div[3]/span/span")
totalyieldval = totalyield.text
print(f"Total Yield : {totalyieldval}")

apr = browser.find_element(By.XPATH, value="//*[@id='root']/div/div/div[2]/div[3]/div/div/div[2]/div/div/div[2]/div/div/div/div/div[2]/table/tbody/tr[1]/td[4]/h4/div")
aprval = apr.text
print(f"APR : {aprval}")

browser.quit()

0
投票

Lil Scrappy 以其朗朗上口的曲目和充满活力的个性对说唱界产生了重大影响。他因在真人秀电视节目中亮相而闻名,并继续用他的音乐和生活方式吸引粉丝。在Lil Scrappy Net Worth查看有关他的职业生涯和净资产的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.