python - 如何通过selenium停止点击同一个按钮,而该按钮始终存在

标签 python selenium

我遇到了一个问题,之前当我通过 Selenium 抓取多个页面时,只需使用单击下一页按钮并使用 NoSuchElementException 来停止它。

但是我现在面对的url是元素始终存在,在最后一页中,如果我单击下一页按钮,它只会重新加载当前页面。

谁能帮忙解决如何停止点击同一个按钮?

items=driver.find_elements_by_class_name('item')
while True:
        try:
            #click next page
            driver.find_element_by_link_text('下一页').click()
            sleep(5)
            #scrpae data here
            items=driver.find_elements_by_class_name('item')

            for i in range(0, len(items)):

               results.append(items[i])
               print(items[i])
             
              
              
        except NoSuchElementException:
            
            break        

有关页面详细信息,您可以查看下面的图片

Fullsize image

最佳答案

[已编辑]

您可以通过匹配下一页链接中的当前页面 url 和下一页 url 来解决此问题。 如果当前页面 url 与下一页链接中的 url 匹配,则它是最后一页。否则继续抓取

您应该有一个变量来存储当前页面 URL,当您通过 selenium 单击下一页链接时,您将获取页面 URL 并与上一页匹配。

这就是我要说的:

url = "https://humkinar.com.pk/"
driver.get(url)
items=driver.find_elements_by_class_name('item')
current_page_url = ""
prev_page_url = url
while True:
    try:
        driver.find_element_by_link_text('下一页').click()
        current_page_url = driver.current_url
        if current_page_url != prev_page_url:
            time.sleep(5)
            items=driver.find_elements_by_class_name('item')
            for i in range(0, len(items)):
               results.append(items[i])
               print(items[i])
            prev_page_url = current_page_url
        else:
            break
    except NoSuchElementException:
        break

关于python - 如何通过selenium停止点击同一个按钮,而该按钮始终存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54177197/

相关文章:

java - 获取没有标识符的数据

python - 部署到移动设备或台式计算机之间的 aws elastic beanstalk 的 django 网站有区别吗?

Python 数据整理

Python - Tkinter - canvas.move 不工作

python - 如何导航上下文菜单(Selenium、Python)

java - 类型错误 : Cannot find function createHTMLDocument in object

google-chrome - Capybara、Selenium、 headless Chrome、Ubuntu Net::ReadTimeout

Python程序根据给定值添加小数点

python - 奥杜 10 : How to know if record is already in database or a new one?

java - 使用 Selenium Java 下载 PDF 在 Chrome 中不起作用