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

为什么FlickrAPI在返回爬取结果后出现长时间挂起无响应的问题?

问题原因

你代码中调用的flickr.walk()方法返回的是持续分页拉取结果的迭代器,当前逻辑仅在序号i小于目标数量n时处理数据,没有在收集到足够的目标URL后主动终止循环,迭代器会持续向Flickr接口请求后续分页的照片数据,直到遍历完全部匹配搜索条件的结果才会停止,这就是程序爬取到需要的URL后仍长时间停滞的核心原因。

修复方案

直接在循环中增加终止判断,收集到n条有效数据后立刻跳出循环即可,修改后的循环逻辑如下:

urls = []
for i, photo in enumerate(photos):
    # 收集到足够数量后直接终止循环,停止拉取后续分页数据
    if i >= n:
        break
    try:
        # 构造图片URL
        url = photo.get('url_o')  # 原始尺寸
        if url is None:
            # 拼接大尺寸图片URL
            url = 'https://farm%s.staticflickr.com/%s/%s_%s_b.jpg' % \
                  (photo.get('farm'), photo.get('server'), photo.get('id'), photo.get('secret'))

        if download:
            download_uri(url, dir)

        urls.append(url)
        print('%g/%g %s' % (i, n, url))
    except:
        print('%g/%g error...' % (i, n))
额外注意事项
  • 你原代码中单独写的一行download是无效语句,可以直接删除
  • 如果修改后仍偶现卡顿,建议检查download_uri函数是否添加了请求超时配置,避免下载单个文件时长时间无响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:06:03