Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “我怎么刮呢?”;净值;来自YieldWatch?_Python_Selenium_Web Scraping - Fatal编程技术网

Python “我怎么刮呢?”;净值;来自YieldWatch?

Python “我怎么刮呢?”;净值;来自YieldWatch?,python,selenium,web-scraping,Python,Selenium,Web Scraping,我想根据以下内容刮取一个网站: 去 在地址文本框中输入0xf542747f717b1ab52ba0d3a7cbf635f856a0d,然后单击双筒望远镜 删去“净值”下的文字 我正在Python中使用Selenium进行尝试,以下是我迄今为止的尝试: from selenium.webdriver import Safari # pip install selenium from selenium.webdriver.support.ui import WebDriverWait url =

我想根据以下内容刮取一个网站:

  • 在地址文本框中输入
    0xf542747f717b1ab52ba0d3a7cbf635f856a0d
    ,然后单击双筒望远镜
  • 删去“净值”下的文字
  • 我正在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)?

    您正在尝试读取以用户界面为中心的图像元素文本,但它仍然没有显示最终值。
    请尝试等待位于(By.XPATH,//div[@class='content']//div[@class='header']])的\u元素的
    不可见性\u


    然后再从
    ui-centered image
    元素中读取文本。

    你真的不需要
    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
    
    注意:上面说你需要
    总债务
    来计算净值,但是这个钱包没有任何债务,所以我没有在等式中包括价值


    但是,如果您的钱包欠债,请与他人分享,我会更新答案。

    真不错!你是如何知道API是如何工作的?