You need to enable JavaScript to run this app. Selenium Python 循环执行失效:批量抓取新闻链接结果为空
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Python 循环执行失效:批量抓取新闻链接结果为空

问题原因
  • 核心时序不匹配:代码未设置任何页面等待逻辑。driver.get() 仅触发页面加载指令,默认等待页面基础HTML框架加载完成即返回执行后续代码。该站点的新闻列表为异步渲染,基础框架加载完成时,link-detailpage 对应的新闻元素还未生成,此时直接执行定位操作会返回空列表。手动逐行执行时,人工操作的间隔天然给了页面渲染时间,因此可正常抓取。
  • API兼容性问题:代码使用的 find_element_by_id、find_elements_by_tag_name、find_elements_by_class_name 为Selenium 3及更早版本的废弃API,Selenium 4+环境下这类方法可能失效,进一步导致定位异常。
修复方案
  • 替换废弃的旧定位API,统一使用 By 类的标准定位方法。
  • 为每个页面的目标元素添加显式等待,确保元素完全渲染后再执行抓取操作。
  • 可配置页面加载策略,减少冗余等待时长。

修复后的完整可运行代码:

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

# 初始化浏览器时可配置页面加载策略,按需启用
# options = webdriver.ChromeOptions()
# options.page_load_strategy = 'eager'  # 仅等待DOM加载完成,不等待图片、样式等静态资源
driver = webdriver.Chrome('C:/Users/SoumyaPandey/Desktop/Galytix/Scrapers/data_ingestion/chromedriver.exe')
# 初始化显式等待,最长等待10秒,可根据网络情况调整时长
wait = WebDriverWait(driver, 10)

driver.get('https://www.cnhindustrial.com/en-us/media/press_releases/Pages/default.aspx')
years_urls = list()
# 等待年份筛选控件加载完成后再定位年份元素
years_container = wait.until(
    EC.presence_of_element_located((By.ID, 'ctl00_ctl33_g_8893c127_d0ad_40f2_9856_d85936172f35_years'))
)
years_elements = years_container.find_elements(By.TAG_NAME, 'a')
for year_ele in years_elements:
    years_urls.append(year_ele.get_attribute('href'))

newslinks = list()
for year_url in years_urls:
    driver.get(year_url)
    # 等待新闻列表元素渲染完成后再抓取
    news_elements = wait.until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, 'link-detailpage'))
    )
    for news_ele in news_elements:
        newslinks.append(news_ele.find_element(By.TAG_NAME, 'a').get_attribute('href'))

# 抓取完成后关闭浏览器,释放资源
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 23:36:01