使用 Selenium 和 Python 传递值时,动态下拉列表不会在 https://www.nseindia.com/ 上填充自动建议

2023-12-05

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")

我正在尝试从这个中刮掉桌子website在您在其上方的文本字段中输入公司名称后,就会出现该信息。附加的代码块与普通谷歌搜索和 Wolfram 网站的类似下拉菜单配合得很好,但是当我在所需网站上运行我的脚本时,基本上只是在文本字段中输入所需的文本 - 下拉列表显示“未找到记录” ',而手动完成时效果很好。


我执行了您的测试,添加了一些调整,并按如下方式运行测试:

  • 代码块:

    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()在文本为的元素上Get Data确实发生了。但在检查时DOM Tree of the webpage你会发现一些<script>标签指的是JavaScript有关键字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>

这清楚地表明该网站受到保护机器人经理提供的高级机器人检测服务Akamai得到的响应是blocked.


机器人经理

根据文章机器人管理器 - 基础:

akamai_detection


结论

因此可以得出结论,检测到数据请求是由Selenium driven 网络驱动程序实例并且响应被阻止。


参考

几个文档:

  • 机器人经理
  • 机器人管理器:基础

tl; dr

一些相关的讨论:

  • Selenium webdriver:修改 navigator.webdriver 标志以防止 selenium 检测
  • 无法使用 Selenium 自动登录 Chase 网站
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Selenium 和 Python 传递值时,动态下拉列表不会在 https://www.nseindia.com/ 上填充自动建议 的相关文章

随机推荐