driver = webdriver.Chrome('C:/Workspace/Development/chromedriver.exe')
driver.get('https://www.nseindia.com/companies-listing/corporate-filings-actions')
inputbox = driver.find_element_by_xpath('/html/body/div[7]/div[1]/div/section/div/div/div/div/div/div[1]/div[1]/div[1]/div/span/input[2]')
inputbox.send_keys("Reliance")

Я пытаюсь очистить таблицу с этого веб-сайта, который мог бы появиться после того, как вы введете название компании в текстовое поле над ним. Прилагаемый блок кода хорошо работает с такими похожими раскрывающимися списками обычного поиска Google и веб-сайта wolfram, но когда я запускаю свой скрипт на нужном веб-сайте, он просто вводит требуемый текст в текстовое поле - в раскрывающемся списке отображается «Записи не найдены ', тогда как в ручном режиме работает хорошо.

3
Pratik Chaudhari 18 Июн 2020 в 21:34

1 ответ

Лучший ответ

Я выполнил ваш тест, добавив несколько настроек, и провел тест следующим образом:

  • Блок кода:

    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
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get('https://www.nseindia.com/companies-listing/corporate-filings-actions')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='Corporate_Actions_equity']//input[@placeholder='Company Name or Symbol']"))).send_keys("Reliance")
    
  • Наблюдение: аналогично вашему наблюдению, я наткнулся на то же препятствие, но без результатов:

nseindia


Глубокое погружение

Кажется, что click() на элементе с текстом, как Получить данные , действительно происходит. Но при просмотре дерева DOM веб-страницы вы обнаружите, что некоторые из Тег <script> относится к сценариям JavaScripts , имеющим ключевое слово akam . В качестве примера:

  • <script type="text/javascript" src="https://www.nseindia.com/akam/11/3b383b75" defer=""></script>
  • <noscript><img src="https://www.nseindia.com/akam/11/pixel_3b383b75?a=dD02ZDMxODU2ODk2YTYwODA4M2JlOTlmOGNkZTY3Njg4ZWRmZjE4YmMwJmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" /></noscript>

Это явный признак того, что веб-сайт защищен ботом Manager - расширенная служба обнаружения ботов, предоставляемая Akamai и ответ будет заблокирован .


Менеджер ботов

Согласно статье Менеджер ботов - Основы:

akamai_detection


Вывод

Таким образом, можно сделать вывод, что запрос данных определяется как выполняемый Selenium под управлением WebDriver, и ответ заблокирован.


Ссылки

Пара документации:


ТЛ ; доктор

Пара актуальных дискуссий:

5
DebanjanB 18 Июн 2020 в 19:11