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

Google Colab使用bing_image_downloader并行爬取图片的参数配置求助

解决方案

核心问题说明

你原有代码存在两处核心错误:

  • 函数定义与传参不匹配:scrape_bing仅定义接收1个df参数,但调用时传入了完全无关的i、j两个参数
  • 任务逻辑未关联实际数据:你编写的双重循环遍历数字的逻辑,和df中要爬取的搜索词数据没有任何关联,也没有做df分片处理

修复后可运行代码

直接将单条搜索词作为最小并行任务,不需要手动拆分df,joblib会自动分配任务到对应进程:

import os
import multiprocessing
from joblib import Parallel, delayed
from bing_image_downloader import downloader

# 单条搜索词爬取逻辑,每次处理一个搜索任务
def scrape_single_term(search_term, target_fname):
    print(f"爬取关键词:{search_term}")
    downloader.download(
        search_term, 
        limit=200,
        output_dir="FOLDERX", 
        adult_filter_off=True, 
        force_replace=False, 
        timeout=60
    )
    # 重命名为目标文件夹名,增加存在判断避免报错
    src_path = os.path.join("FOLDERX", search_term)
    dst_path = os.path.join("FOLDERX", target_fname)
    if os.path.exists(src_path):
        os.rename(src_path, dst_path)

# 提前创建根输出目录,避免多进程同时创建冲突
os.makedirs("FOLDERX", exist_ok=True)

# 启动并行任务,n_jobs设置为你需要的并发数,比如2
Parallel(n_jobs=2, verbose=10)(
    delayed(scrape_single_term)(row['search_term'], row['fname'])
    for _, row in df.iterrows()
)

注意事项

  • 不要把并发数n_jobs设置过高,短时间大量请求会触发Bing反爬机制,导致IP被临时限制
  • 如果搜索词包含特殊字符(比如示例中的coffee.),可先打印src_path确认bing_image_downloader生成的目录名与预期一致,避免rename时找不到路径
  • verbose=10参数会输出并行任务进度,方便你在Colab中查看运行状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:39:01