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

Python Selenium爬取URL后无法生成Excel文件求助

问题分析与解决方案

代码核心问题

  1. 错误的变量赋值:urls = print(elem.get_attribute("href"))中,print()函数返回None,导致urls始终为None,无法用于DataFrame的写入。
  2. 数据写入逻辑错误:df.loc[i,urls]放在外层循环之外,仅会处理最后一个索引i,且列名为None,完全无效。
  3. 缺少数据收集逻辑:仅打印爬取到的URL,未将数据存储到DataFrame中。
  4. 等待时机错误:time.sleep(2)放在代码末尾,未在页面加载后等待,可能导致元素未加载完成就爬取。
  5. 可能缺少Excel写入依赖:pandas.to_excel需要openpyxl引擎,未安装会导致写入失败。

修正后的代码

import time
from selenium.webdriver.common.by import By

# 新增列用于存储爬取到的URL
df['Crawled_URLs'] = ''

for i in range(len(df)):
    driver.get(df.loc[i, 'URL'])
    time.sleep(2)  # 等待页面加载完成
    # 定位所有带href的a标签
    link_elements = driver.find_elements(by=By.XPATH, value="//a[@href]")
    # 收集所有href链接到列表
    crawled_urls = [elem.get_attribute("href") for elem in link_elements]
    # 将链接用换行分隔存入DataFrame,方便Excel中查看
    df.loc[i, 'Crawled_URLs'] = '\n'.join(crawled_urls)
    print(f"完成第{i}条URL处理,共爬取{len(crawled_urls)}个链接")

# 写入Excel,指定openpyxl引擎
df.to_excel('Results.xlsx', index=False, engine='openpyxl')
print("Excel文件已成功生成")

关键修改说明

  • 新增Crawled_URLs列,明确指定爬取结果的存储位置。
  • 使用列表推导式收集所有href链接,替代错误的print()赋值逻辑。
  • 将time.sleep(2)移至页面加载后,确保元素可被正常定位。
  • 写入Excel时指定engine='openpyxl',避免因依赖缺失导致失败。
  • 增加进度打印,便于跟踪处理状态。

前置准备

如果未安装openpyxl,先执行以下命令安装:

pip install openpyxl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:05:23