Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python webscraping Selenium在登录后无法导航页面并获取数据_Python_Selenium_Selenium Webdriver_Web Scraping_Selenium Chromedriver - Fatal编程技术网

Python webscraping Selenium在登录后无法导航页面并获取数据

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元素的位置

我正在使用Selenium来自动化内部Webportal中的几个复选框。我能够使用Selenium使用凭据成功登录到页面。但在登录后,如果我试图导航到所需的页面以获取网页内容,即使登录也不会发生。并且该页面保留在登录页面本身中,而无法登录到Webportal

以下是我使用的方法:

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
出现问题:

  • 网页将不会使用提及的登录凭据登录
  • 刮取的内容只提供登录页面数据(即,输入用户名、密码)
  • 有人能给我推荐一个如何有效使用Selenium的好教程吗
    • 用标记刮取数据。目前我非常困惑如何使用“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