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

使用pandas循环爬取多页网页表格仅得到最后一页结果问题

多分页表格爬取仅保存最后一页数据的修复方法

问题原因

  • 循环爬取分页的逻辑中,每次执行df[0].to_csv('tab.csv',index=False)时,默认使用覆盖写入模式:每爬完一页就会清空文件原有内容,写入当前页数据。循环结束后文件内自然只保留最后一页的爬取结果。

修复方案

方案1:聚合所有页数据后一次性导出(推荐)

逻辑简单不易出错,适合总数据量不大的场景:

import pandas as pd

all_page_data = []
# 遍历所有分页
for page in range(1, 26):
    target_url = f'https://www.baroul-cluj.ro/tabloul-avocatilor/avocati-definitivi/?wpv_view_count=9662&wpv_post_search=&wpv_paged={page}'
    # 读取当前页的第一个表格
    current_df = pd.read_html(target_url)[0]
    all_page_data.append(current_df)

# 合并所有分页数据,重置索引
final_df = pd.concat(all_page_data, ignore_index=True)
# 导出为csv,utf-8-sig编码避免Excel打开乱码
final_df.to_csv('tab.csv', index=False, encoding='utf-8-sig')

方案2:边爬边追加写入

适合数据量较大、不想占用太多内存的场景,需要注意控制写入模式和表头输出:

import pandas as pd

for page in range(1, 26):
    target_url = f'https://www.baroul-cluj.ro/tabloul-avocatilor/avocati-definitivi/?wpv_view_count=9662&wpv_post_search=&wpv_paged={page}'
    current_df = pd.read_html(target_url)[0]
    if page == 1:
        # 第一页用覆盖写入模式,写入表头
        current_df.to_csv('tab.csv', index=False, encoding='utf-8-sig', mode='w')
    else:
        # 后续页用追加写入模式,不重复写入表头
        current_df.to_csv('tab.csv', index=False, encoding='utf-8-sig', mode='a', header=False)

注意:如果爬取过程中出现请求失败,可以在循环内加适当的延时和异常捕获逻辑,避免被站点反爬拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:24:16