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

如何将URL图片下载至本地并添加为DataFrame的新列?

解决推特头像下载与DataFrame本地路径匹配问题

核心思路

遍历DataFrame中的每一行,针对每个头像URL完成下载后,直接将本地路径存入新列,利用apply方法自动完成行匹配,无需手动关联。

代码实现(推荐使用requests,更灵活)

import pandas as pd
import requests
import os
from urllib.parse import urlparse

# 1. 创建头像保存文件夹(不存在则自动新建)
save_dir = "twitter_avatars"
os.makedirs(save_dir, exist_ok=True)

# 2. 定义下载函数,返回本地路径或失败标记
def download_avatar(img_url, user_id, save_dir):
    # 用用户ID作为文件名(保证唯一),保留原图片后缀
    ext = os.path.splitext(urlparse(img_url).path)[1]
    filename = f"{user_id}{ext}"
    local_path = os.path.join(save_dir, filename)
    
    try:
        # 流式下载图片,避免内存占用过高
        response = requests.get(img_url, stream=True, timeout=10)
        response.raise_for_status()  # 捕获HTTP请求错误
        with open(local_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
        return local_path
    except Exception as e:
        print(f"用户ID {user_id} 头像下载失败:{str(e)}")
        return None

# 3. 将函数应用到DataFrame,生成本地路径列
# 假设你的原始数据存储在df中
df['local_img_path'] = df.apply(lambda row: download_avatar(row['img_path'], row['id'], save_dir), axis=1)

如果你习惯用wget的替代实现

import pandas as pd
import wget
import os
from urllib.parse import urlparse

save_dir = "twitter_avatars"
os.makedirs(save_dir, exist_ok=True)

def download_avatar_wget(img_url, user_id, save_dir):
    ext = os.path.splitext(urlparse(img_url).path)[1]
    filename = f"{user_id}{ext}"
    local_path = os.path.join(save_dir, filename)
    
    try:
        wget.download(img_url, out=local_path)
        return local_path
    except Exception as e:
        print(f"用户ID {user_id} 头像下载失败:{str(e)}")
        return None

df['local_img_path'] = df.apply(lambda row: download_avatar_wget(row['img_path'], row['id'], save_dir), axis=1)

关键说明

  • 用用户id作为文件名:保证每个文件唯一,避免重名覆盖,同时直接对应原数据行,无需额外匹配逻辑
  • 异常处理:单个头像下载失败不会中断整个流程,失败行会标记为None,后续可单独处理
  • 流式下载:针对大图片更友好,避免内存溢出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:40:32