硒python加载更多按钮不起作用

Posted

技术标签:

【中文标题】硒python加载更多按钮不起作用【英文标题】:selenium python load more button not working 【发布时间】:2021-11-18 02:45:27 【问题描述】:

我正在尝试无限时间单击加载更多按钮,直到加载所有产品。但是我的加载更多按钮不起作用。这是我的代码:

url = 'https://www.pursemall.ru/vuitton/damier-azur'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)


try:
    for i in range(1000):
     load_more_button = driver.find_element_by_xpath("//span[text()='Load More Products']")
     load_more_button.click()
except:
    pass
    print("task load more button completed") 

为什么我的加载更多按钮不起作用?我在哪里做错了?

【问题讨论】:

尝试检查元素并复制其 CSS 选择器或 XPath 【参考方案1】:

我不能 100% 确定为什么您的原始代码无法正常工作,但我能够通过复制按钮的完整 XPATH 而不是上面代码中的内容来使其正常工作。

我还使用WebDriverWaitsleep() 等待几秒钟,直到每次点击后按钮加载完毕,因为这是网络爬虫的好习惯。也许问题是两者的结合:)

url = 'https://www.pursemall.ru/vuitton/damier-azur'
driver = webdriver.Chrome(PATH) # PATH is where you have chromedriver stored on your machine
driver.maximize_window()
driver.get(url)

try:
    for i in range(1000):
        load_more_button = WebDriverWait(driver, 10).until(ec.element_to_be_clickable(
            (By.XPATH, '/html/body/div[1]/div/div[3]/div[3]/span/a/span')))
        sleep(3)
        load_more_button.click()
except:
    pass
    print("task load more button completed")

【讨论】:

【参考方案2】:

您可以执行以下操作。循环内的每个调用都会获取一组产品。您可以抓取每个响应并收集数据。

在浏览器中执行 F12 -> Network -> XHR 并查看每次点击 Load More Products

时浏览器如何进行 HTTP 调用
import requests


for page in range(1,4):
    url = f'https://www.pursemall.ru/vuitton/damier-azur?page=page'
    print(url)
    r = requests.get(url)
    print(r.status_code)

【讨论】:

以上是关于硒python加载更多按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从硒导入网络驱动程序不起作用?

按钮在 XIB 文件中不起作用

无限滚动加载更多信息后,滑动滑块不起作用

带有 AJAX 加载页面的“发送”按钮不起作用

使用 XIB 加载的 UIView 按钮不起作用

Ajax加载后按钮上的JQuery HTML onclick属性不起作用