Python webscraping Selenium在登录后无法导航页面并获取数据
我正在使用Selenium来自动化内部Webportal中的几个复选框。我能够使用Selenium使用凭据成功登录到页面。但在登录后,如果我试图导航到所需的页面以获取网页内容,即使登录也不会发生。并且该页面保留在登录页面本身中,而无法登录到Webportal 以下是我使用的方法:Python webscraping Selenium在登录后无法导航页面并获取数据,python,selenium,selenium-webdriver,web-scraping,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Web Scraping,Selenium Chromedriver,我正在使用Selenium来自动化内部Webportal中的几个复选框。我能够使用Selenium使用凭据成功登录到页面。但在登录后,如果我试图导航到所需的页面以获取网页内容,即使登录也不会发生。并且该页面保留在登录页面本身中,而无法登录到Webportal 以下是我使用的方法: driver.get(“”) #最大化窗口 驱动程序。最大化_窗口() #等待用户名输入,滚动到它,输入用户名 username=WebDriverWait(驱动程序,延迟)。直到(EC.presence\u元素的位置
driver.get(“”)
#最大化窗口
驱动程序。最大化_窗口()
#等待用户名输入,滚动到它,输入用户名
username=WebDriverWait(驱动程序,延迟)。直到(EC.presence\u元素的位置((By.ID,“inputUsername”))
驱动程序。执行_脚本(“参数[0]。scrollIntoView();”,用户名)
用户名。发送密钥(“”)
...... 同样使用密码…然后提交。。。
submit=WebDriverWait(驱动程序,延迟)。直到(EC.element可点击((By.CLASS\u NAME,“btn”))
驱动程序。执行_脚本(“参数[0]。scrollIntoView();”,提交)
提交。单击()
WebDriverWait(驱动程序,延迟)
驱动程序。获取(“”)
#WebDriverWait(driver,DELAY).until(driver.get(所需的URL))
url=驱动程序。当前\u url
获取驱动程序(url)
source=driver.page\u source
出现问题:
- 用标记刮取数据。目前我非常困惑如何使用“EC.presence\u of_element\u located”和“find_element\u by_ID”
- 登录后到达我想要刮的网页
- 如何从我想要的页面中提取数据
事先非常感谢错误是什么?在获取“Yes.”时被重定向到登录页面。谢谢。我现在编辑了引号。问题是我希望在登录后导航到webportal内的页面。但是如果我将此新URL作为驱动程序。get()在编写了登录代码之后,驱动程序没有登录,我想它正在尝试在甚至没有登录的情况下打开navigatedURL。因此页面停留在第一个页面上,甚至无法登录。登录将花费一定的时间…可能不会太多,但您根本没有在这里等待。单击“提交”,然后立即切换页面。(另外,您可能不需要在那里滚动…Selenium会在调用click时自动滚动到视图中。)文档在这里:我也尝试了您建议的等待方式。但我最终注销并停留在第一页。您能建议我可以使用的任何方法吗?我尝试了WebDriverWait(driver,DELAY)。直到(driver.get)(new_URL)),并在driver.get(new_URL)之前放置了一个wait语句,或者在登录页面打开后,是否有方法浏览和导航分区选项卡。浏览可能很困难(因为它在内部很深),这就是为什么我直接尝试将URL提供给我想要打开的所需ID的原因
driver.get('<myLoginURL>')
# maximize window
driver.maximize_window()
# wait for username input, scroll to it, enter username
username = WebDriverWait(driver, DELAY).until(EC.presence_of_element_located((By.ID, "inputUsername")))
driver.execute_script("arguments[0].scrollIntoView();", username)
username.send_keys("<userID>")
...... similarly with password.....And then submit...
submit = WebDriverWait(driver, DELAY).until(EC.element_to_be_clickable((By.CLASS_NAME, "btn")))
driver.execute_script("arguments[0].scrollIntoView();", submit)
submit.click()
WebDriverWait(driver,DELAY)
driver.get("<URL_To be Navigated to>")
# WebDriverWait(driver,DELAY).until(driver.get(desired_URL))
url = driver.current_url
driver.get(url)
source = driver.page_source