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

Selenium逐页翻页爬取HTML及h2文章标题仅返回部分结果问题

问题原因
  • 核心逻辑顺序错误:你将提取页面源码的操作放在了所有翻页动作完成之后,Selenium的driver.page_source仅能获取当前浏览器停留页面的HTML内容,之前翻页过程中加载过的所有页面内容都没有被留存,最终只能拿到最后一页的9条标题。
  • 异常捕获不完整:翻页终止判断仅捕获了NoSuchElementException,但实际当页面不存在下一页按钮时,显式等待超时会抛出TimeoutException,未捕获该异常会导致循环提前中断,甚至无法正常抵达最后一页。
  • 存在冗余无效代码:重复导入WebDriverWait,其中别名Wait的导入从未被调用,无实际作用。
修复方案

按照以下逻辑调整代码即可获取全量标题:

  • 初始化全局列表存储所有页面的标题,不要等全部翻页完成后再一次性提取源码。
  • 每次页面加载完成后(包括首次打开的首页),立刻提取当前页的所有h2标题存入全局列表,再执行翻页操作。
  • 补全异常捕获逻辑,同时处理元素不存在、等待超时两类终止场景,确保翻页循环能正常走到最后一页。
  • 翻页点击后增加短等待,确认新页面内容完全渲染后再执行提取,避免拿到残缺的未加载内容。
  • 清理冗余导入,规范代码结构。

修正后的可运行代码如下:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from bs4 import BeautifulSoup as bs

options = Options()
# 可根据需要开启无头模式
# options.add_argument("--headless=new")
driver = webdriver.Chrome("C:/Users/krish/Desktop/chromedriver_win32/chromedriver.exe", options=options)
driver.get('https://www.cnbcindonesia.com/tag/pasar-modal')

all_titles = []

while True:
    # 等待当前页面文章内容加载
    time.sleep(2)
    # 提取当前页所有h2标题
    current_soup = bs(driver.page_source, 'html.parser')
    current_page_titles = [h2.get_text(strip=True) for h2 in current_soup.find_all('h2')]
    all_titles.extend(current_page_titles)
    
    # 尝试点击下一页
    try:
        next_button = WebDriverWait(driver, 15).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, ".icon.icon-angle-right"))
        )
        driver.execute_script("arguments[0].click();", next_button)
    except (NoSuchElementException, TimeoutException):
        # 无下一页按钮时退出循环
        break

driver.quit()

# 输出所有结果
for title in all_titles:
    print(title)
print(f"\n总计获取标题数量:{len(all_titles)}")

补充说明:如果运行后发现存在重复标题,可以在存入全局列表前做去重处理,部分资讯类网站翻页时会重复加载上一页的尾部内容,属于正常现象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:15:30