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

如何将Python Shell中Flickr API返回的照片ID输出为CSV文件

解决方案:提取Flickr照片ID并保存到CSV

你现在的代码只是把原始XML响应转成字符串保存,没有解析其中的photo元素信息。我们可以直接利用Python的XML解析工具提取每个photo标签的id属性,再规范写入CSV文件。下面是修改后的完整代码:

import csv
import flickrapi
import xml.etree.ElementTree as ET

# 替换为你的Flickr API密钥和密钥
api_key='xxxxxxxxxxxxxxxx'
api_secret ='xxxxxxxxxxxx'

flickr = flickrapi.FlickrAPI(api_key, secret=api_secret)
# 优化参数:直接传入正常字符串,flickrapi会自动处理URL编码
r = flickr.photos_search(advanced='1', text='agriculture south africa', has_geo="1", per_page='10')

# 解析API返回的XML响应
root = ET.fromstring(ET.tostring(r))

# 提取所有photo元素的id属性
photo_ids = [photo.get('id') for photo in root.findall('.//photo')]

# 将ID写入CSV文件
with open('farm_photo_ids.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    # 写入可选表头(方便后续识别列)
    writer.writerow(['photo_id'])
    # 逐个写入照片ID
    for photo_id in photo_ids:
        writer.writerow([photo_id])

print("照片ID已成功保存到farm_photo_ids.csv")

关键修改说明:

  • 参数优化:text参数直接传入正常英文短语'agriculture south africa',flickrapi库会自动处理URL编码,无需手动写%20,代码更易读维护。
  • XML解析:用ET.fromstring()把API响应转换成可遍历的XML元素,再通过findall('.//photo')定位所有photo标签,最后用get('id')提取目标属性。
  • CSV规范写入:使用Python内置的csv.writer确保输出符合CSV格式,添加可选表头让文件结构更清晰,同时把输出文件格式从.docx改成.csv(docx是文档格式,不适合存储结构化表格数据)。

补充提示:

如果需要获取全部分页的照片ID,可以先从XML响应的photos标签里提取pages属性(总页数),然后循环调用photos_search并传入page参数(比如page=2、page=3),直到获取完所有页面的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:32:35