You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium Basic(VBA)获取分页总数并遍历页面的技术问题

使用Selenium获取分页总页数并遍历所有页面

刚接触Selenium的话,这个需求其实挺典型的,我来一步步给你拆解实现方法,代码都是可直接运行的(前提是你已经装好了Selenium和对应浏览器驱动)。

第一步:获取分页总页数

首先得定位到页面底部的分页组件,提取出总页数。以https://codingislove.com/为例,网站分页区域有两种方式可以拿到总页数,我都给你写出来,你按需选择:

方式1:从“Page X of Y”文本中提取

网站分页栏里会显示类似Page 1 of 6的文本,我们可以直接拆分这个文本拿到总页数:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 初始化Chrome驱动(换成Firefox等其他浏览器也可以)
driver = webdriver.Chrome()
driver.get("https://codingislove.com/")

# 等待分页信息加载完成,最多等10秒
pagination_text = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, ".pagination-info"))
).text

# 拆分文本拿到总页数,比如把"Page 1 of 6"拆成列表,取最后一个元素转成整数
total_pages = int(pagination_text.split("of")[-1].strip())
print(f"当前网站总页数:{total_pages}")

方式2:通过最后一个页码按钮获取

如果网站分页直接列出所有数字页码按钮,也可以取最后一个按钮的文本作为总页数:

# 等待所有页码按钮加载完成
page_buttons = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".pagination li a"))
)

# 筛选出纯数字的按钮文本,取最后一个就是总页数
total_pages = int([btn.text for btn in page_buttons if btn.text.isdigit()][-1])
print(f"当前网站总页数:{total_pages}")

第二步:遍历所有分页加载内容

拿到总页数后,就可以循环遍历每一页了。这里推荐直接构造分页URL的方式(比点击按钮更稳定,避免元素定位失败),这个网站的分页URL格式是https://codingislove.com/page/{页码}/,所以我们可以从1到总页数依次访问:

try:
    for page_num in range(1, total_pages + 1):
        # 构造当前页的URL
        current_page_url = f"https://codingislove.com/page/{page_num}/"
        driver.get(current_page_url)
        
        print(f"已成功加载第 {page_num} 页")
        
        # 等待页面核心内容加载完成(比如文章列表),避免提前操作导致报错
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".post-list"))
        )
        
        # 这里可以添加你需要的业务逻辑,比如提取文章标题、内容等
        # 示例:提取当前页所有文章标题
        post_titles = driver.find_elements(By.CSS_SELECTOR, ".post-title a")
        for title in post_titles:
            print(f"- {title.text}")
            
        # 如果网站有反爬机制,可以加个短延迟,比如time.sleep(2)
finally:
    # 操作完成后别忘了关闭浏览器
    driver.quit()

一些实用提示

  • 确保你已经下载了对应浏览器的驱动(比如ChromeDriver),可以配置环境变量,或者在初始化driver时指定驱动路径。
  • 如果网站更新了页面结构,元素定位的CSS选择器可能会失效,记得用浏览器开发者工具重新定位元素。
  • 遇到加载慢的页面,可以适当延长等待时间,或者添加显式等待,避免出现元素未加载的报错。

内容的提问来源于stack exchange,提问作者QHarr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:38:23