使用Selenium从stackoverflow中提取用户数据

时间:2016-06-07 10:50:07

标签: python selenium web-scraping

我对这个网络抓取(数据提取)的东西很新。我想从他的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

提前致谢。我确定我错过了一些东西。

1 个答案:

答案 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