我对这个网络抓取(数据提取)的东西很新。我想从他的stackoverflow帐户中提取用户的声誉。我正在使用Selenium。我已成功登录,但无法从下一个网址获取数据,即http://stackoverflow.com
这是我的代码:
from selenium import webdriver
from selenium.webdriver.support import ui
def page_is_loaded(driver):
return driver.find_element_by_tag_name("body") != None
chromedriver = 'C:\\chromedriver.exe'
browser = webdriver.Chrome(chromedriver)
browser.get('https://stackoverflow.com/users/login')
username = browser.find_element_by_id("email")
password = browser.find_element_by_id("password")
username.send_keys("emailID")
password.send_keys("password")
browser.find_element_by_name("submit-button").click()
wait = ui.WebDriverWait(browser, 10)
wait.until(page_is_loaded)
print browser.current_url
它有效,我被重定向到下一页,但最后一个命令仍然打印: https://stackoverflow.com/users/login
提前致谢。我确定我错过了一些东西。
答案 0 :(得分:1)
重定向后更新browser.current_url
需要一些时间。您可以使用browser.refresh()
或time.sleep()
来获取更新后的值。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://stackoverflow.com/users/login')
username = browser.find_element_by_id("email")
password = browser.find_element_by_id("password")
username.send_keys("emailID")
password.send_keys("password")
browser.find_element_by_name("submit-button").click()
browser.refresh()
print browser.current_url
希望,以下代码的输出可以帮助您更好地理解这一点。
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://stackoverflow.com/users/login')
username = browser.find_element_by_id("email")
password = browser.find_element_by_id("password")
username.send_keys("emailID")
password.send_keys("password")
browser.find_element_by_name("submit-button").click()
for i in range(5):
print browser.current_url, " - loop ", i
time.sleep(1)
print browser.current_url