【问题标题】:Selenium can't open a second pageSelenium 无法打开第二页
【发布时间】:2021-05-05 18:13:59
【问题描述】:

我正在使用 Selenium 打开网站的不同页面。已尝试多次,但浏览器在初始 GET 调用后未打开第二个网页。在 Chrome 和 Safari 上都试过了。这是我的代码:

driver = webdriver.Chrome()
driver.get("https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-2")
driver.set_page_load_timeout(30)
driver.get("https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-3")

这是我第二次调用时遇到的错误:

来自网络日志的信息是错误 504,但我已经验证它在浏览器的另一个窗口上完成时可以正常工作,无需自动化

【问题讨论】:

  • 看起来页面确实打开了它只是打开了一个来自网络服务器的错误。
  • 是的,这是一个服务器错误,但没有更多线索可以帮助解决这个问题。其他 2 个站点也是如此
  • 我想知道 URL 操作是否比简单的 GET 提供的更多。您确定这是正确且完整的网址吗?你可以手动执行吗?手动运行时浏览器中的网络选项卡会显示什么?
  • 代码对我来说工作得很好。我也用过 Chrome。

标签: python selenium google-chrome selenium-webdriver automation


【解决方案1】:

有关您的用例的更多信息将有助于构建更规范的答案。但是,我可以使用最小化的代码块访问Page 2 of justdial.com/Chennai/Hr-Consultancy-Services,如下所示:

  • 代码块:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get("https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-2")
    
  • 浏览器快照:

但是在一个接一个地发送多个get()时:

driver.get("https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-2")
driver.get("https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-3")

似乎ChromeDriver initiated Chrome Browser gets detected 并显示以下错误:

An error occurred while processing your request.
Reference #97.e5732c31.1612205693.6fd2708

解决方案

为避免检测,您可以添加以下选项:

--disable-blink-features=AutomationControlled

示例

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_argument('--disable-blink-features=AutomationControlled')
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get("https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-2")
driver.get("https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-3")

【讨论】:

    【解决方案2】:
    options.add_experimental_option(
        "excludeSwitches", ['enable-automation'])
    
    options.add_argument(
        "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
    options.add_argument("--remote-debugging-port=9222")
    
    driver = webdriver.Chrome(options=options)
    driver.get(
        "https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-2")
    driver.set_page_load_timeout(30)
    driver.get(
        "https://www.justdial.com/Chennai/Hr-Consultancy-Services/nct-10258625/page-3")
    

    网站正在检测自动使用上述代码:)

    您也可以在一行中执行此操作

    只需添加以下参数:

    options.add_argument('--disable-blink-features=AutomationControlled')
    

    禁用 enable-automation 或禁用自动化控制器会禁用 webdriver.navigator,很少有网站使用它来检测自动化脚本

    【讨论】:

    • @AjayKumar 请点击勾选符号接受并投票:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2021-10-08
    • 1970-01-01
    • 2017-08-02
    • 2022-01-27
    • 1970-01-01
    相关资源
    最近更新 更多