Python(Selenium):如何登录登录重定向/组织登录的网站

时间:2017-08-27 02:47:13

标签: python selenium web-scraping

我不是专业的程序员,所以请原谅任何愚蠢的错误 - 我正在做一些研究,我正在尝试使用Selenium登录数据库来搜索大约1000个术语。

我有两个问题: 1.如何在重定向到页面上的组织标志后使用Selenium登录 2.如何搜索数据库

直到我解决1,我才能真正达到2,所以我真的只是询问1.

这是我到目前为止的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

path_to_chromedriver = 'C:/Users/Kyle/Desktop/chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
url = 'http://library.universityname.edu/corpaffils'
browser.get(url)

username = selenium.find_element_by_id("login_id")
password = selenium.find_element_by_id("login_password")

username.send_keys("my username")
password.send_keys("my password")

selenium.find_element_by_name("submit").click()

当我导航到上面的URL时,它会将我引导到我的组织登录页面(例如,login.universityname.edu),我应该可以输入我的用户名和密码,然后它会指示我数据库,但是当我执行上面的代码时,它不会登录我。

我可以在组织登录页面上找到的html如下所示:

<li><label for="login_id">ID:</label><input id="login_id" placeholder="ID" type="text" NAME="user" SIZE="20" VALUE=""/></li>
...
...
<li><label for="login_password">Password:</label><input id="login_password" placeholder="Password" type="password" NAME="pass" SIZE="20" /></li>
...
...
<ul class="submit">
<li><input type="SUBMIT" name="submit" value="Sign in"></li>
</ul>

我认为可能有两个问题,但我不确定它是什么: 1.我的代码试图在重定向之前输入登录信息,因此它不会进入任何东西;要么 2.我的Selenium代码没有正确识别组织登录的字段,因此它不会登录我;要么 3.两者

我需要做些什么才能解决重定向问题?我是否正确识别登录字段并准确处理它们?

1 个答案:

答案 0 :(得分:4)

当您找到元素时,将selenium替换为browser,这将有效。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

path_to_chromedriver = 'C:/Users/Kyle/Desktop/chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
url = 'http://library.universityname.edu/corpaffils'
browser.get(url)

username = browser.find_element_by_id("login_id")
password = browser.find_element_by_id("login_password")

username.send_keys("my username")
password.send_keys("my password")

browser.find_element_by_name("submit").click()

您不需要为重定向做任何事情。它会在登录后自动重定向。

N.B:完成后不要忘记closequit浏览器。