我正在制作一个网络爬虫,以便从https://www.nvidia.com/zh-cn/shop/geforce/?page=1&limit=9&locale=zh-cn上获取gpu股票,以获取30系列卡,我是为此,使用带有bs4和selenium的python。
我想加载更多购物商品,在网站上它具有此加载更多按钮。因此,我抓住了它的类,并使其硒单击它:
driver.find_element_by_class_name("buy-link").click()
但它表示该元素不可交互,HTML为按钮
它给我的确切错误是:
Message: element click intercepted: Element <span class="extra_style buy-link" data-color="#76b900" data-secondary-color="#fff" style="visibility: visible; cursor: pointer;" data-mpn-code="NVGFT070">...</span> is not clickable at point (657, 594). Other element would receive the click: <div class="popBg" id="nv-buy-now-model" style="display: block;">...</div>
我不太了解HTML,如何实现点击此按钮的功能
该LOAD MORE元素是Angular元素,因此单击它需要引入WebDriverWait,element_to_be_clickable()
并且可以使用以下两种定位策略之一:
使用CSS_SELECTOR
:
driver.get("https://www.nvidia.com/en-us/shop/geforce/?page=1&limit=9&locale=en-us")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#cookiePolicy-btn-close>span"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.buy-link.load-more-btn[value='LOAD MORE']"))).click()
使用XPATH
:
driver.get("https://www.nvidia.com/en-us/shop/geforce/?page=1&limit=9&locale=en-us")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='cookiePolicy-btn-close']/span"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='buy-link load-more-btn' and @value='LOAD MORE']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句