【问题标题】:Web scraping text returns 0网页抓取文本返回 0
【发布时间】:2021-10-25 20:39:27
【问题描述】:

每当我尝试从网站上抓取一个数字并打印它时,它总是返回 0,即使我延迟它让窗口先加载也是如此。 这是我的代码,

from selenium import webdriver
import time
url = 'https://hytrack.me/'
browser = webdriver.Chrome(r'C:\Users\kinet\OneDrive\Documents\webscraper\chromedriver.exe')
browser.get(url)
text = browser.find_element_by_xpath('//*[@id="stat_totalPlayers"]').text
time.sleep(10)
print(text)

我需要它做的就是打印一些从网站获取的文本。 我做错了什么还是我完全错过了什么?

【问题讨论】:

    标签: python selenium selenium-chromedriver webdriverwait


    【解决方案1】:

    你应该把延迟放在获取元素之前!

    from selenium import webdriver
    import time
    url = 'https://hytrack.me/'
    browser = webdriver.Chrome(r'C:\Users\kinet\OneDrive\Documents\webscraper\chromedriver.exe')
    browser.get(url)
    time.sleep(10)
    
    text = browser.find_element_by_xpath('//*[@id="stat_totalPlayers"]').text
    print(text)
    

    虽然最好使用显式等待,如下所示:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import time
    url = 'https://hytrack.me/'
    browser = webdriver.Chrome(r'C:\Users\kinet\OneDrive\Documents\webscraper\chromedriver.exe')
    wait = WebDriverWait(driver, 20)
    browser.get(url)
    text = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="stat_totalPlayers"]'))).text
    print(text)
    

    【讨论】:

    • 当然。但推荐的方法是使用预期的条件来使测试更稳定并减少冗余延迟
    猜你喜欢
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多