首页 > 解决方案 > 为什么网站在使用 Selenium 时会阻止浏览器导航?

问题描述

读了这个主题,但它对我没有帮助。

我正在尝试获取一些元素,而这是我对网络的第一次操作。

此外,有时,在我第一次连接到网站时,请求被破坏并且网站拒绝任何内容

该网站如何知道我正在使用硒?我没有做任何模式动作或快速动作..

这是网站

谁能帮我解决这个问题?

这是我的代码

import selenium
from selenium import webdriver


def open_browser():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--disable-infobars")
    browser = selenium.webdriver.Chrome("./chromedriver2.46.exe", chrome_options=chrome_options)
    browser.maximize_window()
    return browser


def go_to_yad2(browser):
    browser.get("https://www.yad2.co.il/products/all")


def open_category(browser):
    options_object = browser.find_element_by_xpath("//ul[@data-name='salesCatID']")
    print(options_object.text())


def main_method():
    browser = open_browser()
    go_to_yad2(browser)
    open_category(browser)


main_method()

标签: pythonseleniumgoogle-chromewebdriverselenium-chromedriver

解决方案


您的问题有点不清楚您试图与哪个元素进行交互,以及为什么在您第一次连接到网站时,请求被破坏并且网站拒绝任何内容

来自网站的更多信息,异常将帮助我们以更好的方式调试问题。但是,我使用了您自己的代码并进行了一些简单的修改,并且能够提取如下文本:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    def open_browser():
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('start-maximized')
        chrome_options.add_argument('disable-infobars')
        chrome_options.add_argument('--disable-extensions')
        browser = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'C:\WebDrivers\chromedriver.exe')
        return browser
    
    def go_to_yad2(browser):
        browser.get("https://www.yad2.co.il/products/all")
    
    def open_category(browser):
        print(WebDriverWait(browser, 30).until(EC.visibility_of_element_located((By.XPATH, "//h3[@class='search_title']"))).text)
    
    def main_method():
        browser = open_browser()
        go_to_yad2(browser)
        open_category(browser)
    
    main_method()
    
  • 控制台输出(非英文字符不会在我的本地主机上呈现):

nonenglish_chars


推荐阅读