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

如何使用Python Selenium ChromeDriver抓取CNBC商业频道文章名称存入列表

实现逻辑
  • 首先配置Chrome浏览器参数,降低被反爬识别的概率
  • 访问目标页面后通过显式等待确保标题元素渲染完成
  • 匹配统一类名的标题元素,遍历提取文本存入列表
  • 可通过模拟滚动加载更多非首屏的文章内容
完整代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

PATH = "C:\\webdrivers"
# 配置浏览器参数,规避反爬检测
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("useAutomationExtension", False)

# Selenium 4+ 无需手动指定ChromeDriver路径,3及以下版本替换为 webdriver.Chrome(PATH, options=chrome_options)
driver = webdriver.Chrome(options=chrome_options)

driver.get("https://www.cnbc.com/business/")

# 可选:模拟滚动加载更多文章,滚动次数可自行调整
scroll_times = 2
for _ in range(scroll_times):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)

# 显式等待最长10秒,直到所有标题元素加载完成
wait = WebDriverWait(driver, 10)
title_elements = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "Card-title")))

# 提取标题存入列表,过滤空字符串
article_titles = [elem.text.strip() for elem in title_elements if elem.text.strip()]

# 测试输出结果
print(f"共获取到{len(article_titles)}篇文章标题:")
for i, title in enumerate(article_titles, 1):
    print(f"{i}. {title}")

# 关闭浏览器进程
driver.quit()
补充说明
  • 如果后续脚本无法定位到元素,大概率是CNBC调整了前端类名,打开浏览器F12开发者工具,选中任意文章标题元素,查看最新的class属性替换即可
  • 如需每日定时执行,可搭配schedule库或系统定时任务实现,结果可导出为csv、txt等格式持久化存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:03