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

使用Selenium无法将href写入Excel工作簿,请求技术协助

问题排查:Selenium爬取Intel新闻时href无法写入Excel

爬取Intel新闻室内容时,title和date能正常写入Excel,但href列始终为空,代码如下:

# Intel newsroom
driver.get('https://www.intel.com/content/www/us/en/newsroom/home.html#gs.4bhcva')
sleep(2)

workbook = openpyxl.load_workbook('test.xlsx')
sheet = workbook['test']
mxR = sheet.max_row
nowrow = mxR + 1  # Start from the next row after existing data
ele = driver.find_elements(By.CLASS_NAME, 'content-headline')
for ele in eles[:3]:  # Print the first 3 elements
    title = ele.find_element(By.CLASS_NAME, 'title').text
    href = ele.find_element(By.CLASS_NAME, 'title').get_attribute('href')
    date = ele.find_element(By.CLASS_NAME, 'article-date').text
    
    sheet.cell(row=nowrow, column=1).value = 'Intel newsroom'
    sheet.cell(row=nowrow, column=2).value = title
    sheet.cell(row=nowrow, column=3).value = href
    sheet.cell(row=nowrow, column=4).value = date
    nowrow += 1  # Move to the next row

workbook.save('test.xlsx')

driver.quit()

问题原因及解决方案

  1. 变量名错误:代码中定义的是ele = driver.find_elements(...),但循环时用的是eles[:3],这会触发NameError(如果实际运行无报错大概率是笔误,需修正为eles = driver.find_elements(...))。

  2. href获取路径错误:Intel新闻页面中,带title类的元素是容器div,真正的链接href属性在其内部的<a>标签上,而非title元素本身。直接从title元素获取href自然返回空值。

修正后的代码

# Intel newsroom
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 openpyxl

driver = webdriver.Chrome()
driver.get('https://www.intel.com/content/www/us/en/newsroom/home.html#gs.4bhcva')
# 用WebDriverWait替代sleep,按需等待元素加载,更可靠
WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CLASS_NAME, 'content-headline'))
)

workbook = openpyxl.load_workbook('test.xlsx')
sheet = workbook['test']
mxR = sheet.max_row
nowrow = mxR + 1  # 从已有数据的下一行开始写入
eles = driver.find_elements(By.CLASS_NAME, 'content-headline')  # 修正变量名
for ele in eles[:3]:  # 处理前3条新闻
    title_container = ele.find_element(By.CLASS_NAME, 'title')
    a_tag = title_container.find_element(By.TAG_NAME, 'a')  # 获取内部的a标签
    title = a_tag.text
    href = a_tag.get_attribute('href')  # 从a标签提取href
    date = ele.find_element(By.CLASS_NAME, 'article-date').text
    
    sheet.cell(row=nowrow, column=1).value = 'Intel newsroom'
    sheet.cell(row=nowrow, column=2).value = title
    sheet.cell(row=nowrow, column=3).value = href
    sheet.cell(row=nowrow, column=4).value = date
    nowrow += 1

workbook.save('test.xlsx')
driver.quit()

额外优化建议

  • 用WebDriverWait替代固定时长sleep,可根据元素加载状态动态等待,避免网络延迟导致的元素未加载问题。
  • 可添加异常捕获逻辑,比如处理找不到a标签的情况,提升代码健壮性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:10:20