Pandas结合Selenium爬取数据导出Excel仅显示列无数据问题咨询
问题根因与修复方案
核心故障点(按影响权重排序)
- 导出对象未同步更新:代码初始化阶段,你用空的
data列表生成了只带列名的空DataFrame对象df。后续爬取流程中,你仅将提取到的内容追加到了data列表,全程没有用填充完成的data重新生成DataFrame;导出时调用的仍是最初那个空的df,自然没有实际爬取内容。 - 代码缩进层级错乱:负责字段重排、往
data追加记录的逻辑块缩进错误,没有正确嵌套在详情页抓取的循环体内。这部分代码运行时要么触发缩进异常中断程序,要么根本不在循环执行路径上,导致data列表全程没有写入任何有效内容。 - 附带优化项:代码中存在未使用的导入模块、重复导入
time、未做元素抓取异常捕获,任意详情页结构差异就会直接中断整个爬取流程。
具体修复步骤
- 修正缩进错误:将内容重排、
data.append()相关代码的缩进调整到与其他详情页字段抓取逻辑一致的层级,确保每爬完一条详情记录,整理好的内容都会被追加到data列表。 - 导出Excel前,用最终填充完成的
data列表重新生成DataFrame,替换掉初始的空导出对象:# 替换原导出段代码 final_df = pd.DataFrame( data, columns=["Total List Number", "Prefecture", "ListLink", "Location Tag", "Event Tag", "Available Period", "Available StartDate", "End Date", "Last Updated", "Main Image URL", "Title", "innerWebSiteURL", "mainText"] ) xlwriter = pd.ExcelWriter('StampRally_Crawler.xlsx') final_df.to_excel(xlwriter, sheet_name="Stamprally.org Crawl Result", index=False) xlwriter.close() - 建议在字段抓取逻辑中增加元素存在性判断,避免因单个页面结构差异导致整段爬取流程崩溃。
说明:原代码中循环内临时打印的DataFrame是即时生成的临时对象,和后续导出用的全局
df不属于同一个对象,不能因为临时打印能看到内容,就默认全局导出对象会同步更新。
内容的提问来源于stack exchange,提问作者noh
相关产品推荐
相关产品推荐

