使用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()
问题原因及解决方案
变量名错误:代码中定义的是
ele = driver.find_elements(...),但循环时用的是eles[:3],这会触发NameError(如果实际运行无报错大概率是笔误,需修正为eles = driver.find_elements(...))。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
相关产品推荐
相关产品推荐

