kineticcat_
kineticcat_

Reputation: 167

Web scraping text returns 0

Whenever I try to scrape a number from a website and print it always returns 0 even if I delay it to let the window load first. Here's my code,

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)

All I need it to do is print some text that it takes from a website. Have I done something wrong or am I just completely missing something?

Upvotes: 1

Views: 82

Answers (1)

Prophet
Prophet

Reputation: 33371

You should put the delay before getting the element!

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)

While it's better to use explicit wait, like this:

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)

Upvotes: 1

Related Questions