- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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")
观察:与您的观察类似,我遇到了同样的障碍,没有结果如下:
似乎click()
在带有文本的元素上,Get Data 确实发生了。但是在检查 DOM Tree 时在 网页 中,您会发现一些 <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>
这清楚地表明该网站受 Bot Manager 保护Akamai 提供的高级机器人检测服务并且响应被阻止。
根据文章Bot Manager - Foundations :
因此可以得出结论,检测到数据请求是由Selenium执行的。驱动 WebDriver实例和响应被阻止。
一些文档:
几个相关的讨论:
关于python - 当使用 Selenium 和 Python 传递值时,动态下拉列表不会填充 https ://www. nseindia.com/上的自动建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62457093/
import mechanize br = mechanize.Browser() url = 'http://nseindia.com' br.oprn(url) 错误是 Traceback (mo
driver = webdriver.Chrome('C:/Workspace/Development/chromedriver.exe') driver.get('https://www.nsein
我是一名优秀的程序员,十分优秀!