从多URL抓取表格数据时首链接重复问题求助
问题解决:循环抓取页面重复获取第一页数据
问题原因
你定义的URL里的{count}只是静态字符串,没有在循环中替换成当前的count数值,导致每次请求的都是同一个包含{count}的原始地址。服务器识别到无效的页码参数,默认返回第一页数据,所以重复抓取了65次第一页表格。
修正方案
在循环内部,每次请求前把URL模板中的占位符替换为当前循环的count值,同时修复几个细节问题:
import requests import pandas as pd # 定义URL模板 url_template = 'https://basketball.realgm.com/international/stats/2023/Averages/Qualified/All/player/All/desc/{count}' res = [] # range是左闭右开,要遍历1到65需写成range(1, 66) for count in range(1, 66): # 替换模板中的{count}为当前页码 url = url_template.format(count=count) html = requests.get(url).content df_list = pd.read_html(html) df = df_list[-1] res.append(df) print(f"已完成第{count}页抓取") # 合并所有页面的数据并保存 final_df = pd.concat(res, ignore_index=True) final_df.to_csv('my data.csv', index=False)
额外优化说明
- 原代码
range(1, 65)只会运行到count=64,无法覆盖到65页,改成range(1, 66)才能包含65 - 原代码最后只保存了最后一次循环的
df,会丢失前面64页的数据,用pd.concat合并所有DataFrame后再保存才是完整数据 - 添加页码打印,方便跟踪抓取进度
内容的提问来源于stack exchange,提问作者Anthony Madle
相关产品推荐
相关产品推荐

