如何合并pandas.read_html获取的多URL数据帧并导出CSV
实现多URL数据抓取与合并导出
很简单,咱们只需要调整一下代码逻辑,先把所有目标URL存成一个列表,然后逐个抓取DataFrame并收集起来,最后合并成一个大文件导出就行。下面是具体的实现方案:
完整代码示例
import pandas as pd # 第一步:把所有需要抓取的URL放到列表里 url_list = [ 'http://www.url1.com', 'http://www.url2.com', # ... 这里继续添加你的url3到urlN 'http://www.urlN.com' ] # 初始化一个空列表,用来存储每个页面的DataFrame all_dfs = [] # 第二步:遍历每个URL,抓取数据并收集 for url in url_list: try: # 从当前URL抓取表格数据,取第一个表格(如果页面有多个表格,可根据需求调整索引) dfs = pd.read_html(url, header=0) target_df = dfs[0] # 假设每个页面只有一个需要的表格 all_dfs.append(target_df) print(f"成功抓取 {url} 的数据") except Exception as e: print(f"抓取 {url} 时出错: {str(e)}") continue # 出错时跳过当前URL,继续处理下一个 # 第三步:合并所有DataFrame if all_dfs: # 确保有数据才合并 combined_df = pd.concat(all_dfs, ignore_index=True) # 导出到CSV combined_df.to_csv('file.csv', index=False) print("所有数据已合并并导出到 file.csv") else: print("没有抓取到任何有效数据")
一些关键说明
- URL列表:把你所有需要的URL都添加到
url_list里就行,数量多少都可以。 - 表格选择:
pd.read_html会返回页面上所有表格的DataFrame列表,这里用dfs[0]取第一个表格,如果你的目标表格不是第一个,需要调整索引值(比如dfs[1]取第二个)。 - 异常处理:添加了
try-except块,避免某个URL访问失败导致整个程序中断,同时会打印错误信息方便排查。 - 合并参数:
pd.concat里的ignore_index=True是重置合并后DataFrame的索引,避免出现重复索引的问题。
内容的提问来源于stack exchange,提问作者prog-amateur
相关产品推荐
相关产品推荐

