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

Python使用bs4爬取商品图片URL如何合并为单行写入CSV

问题原因

你当前的代码每获取到1张图片URL就单独调用一次writerow写入一行,自然会出现每个URL占一行的情况。正确逻辑是先把同一个商品的所有图片URL收集到一个列表中,全部收集完成后再一次性写入一行。


修正后可直接运行的代码

import csv
from bs4 import BeautifulSoup

# 此处省略你原本的页面请求代码,假设已经拿到soup对象
box = soup.find_all('div',{'class':'row product-container'})

for product in box:
    # 初始化空列表存储当前商品的所有图片URL
    img_url_list = []
    images = product.select('.carousel-image-wrapper img')
    for img in images:
        image_link = img['src']
        print(image_link)
        # 先将URL存入列表,不立即写入
        img_url_list.append(image_link)
    # 单个商品的所有图片收集完成后,一次性写入一行
    with open("image_src.csv", "a", encoding="utf-8", newline='') as f:
        writeFile = csv.writer(f)
        writeFile.writerow(img_url_list)

注意事项

  • 修正了原代码的变量名错误:原代码中你定义的变量是image_link,写入时误用了不存在的image_src变量,会直接触发报错
  • 打开CSV时新增newline=''参数,可避免Windows系统下写入CSV出现多余空行的问题
  • 将文件写入操作移出了图片遍历循环,既满足同商品URL放同一行的需求,也减少了频繁打开关闭文件的IO消耗
  • 如果需要添加表头,可在首次写入文件时先调用writeFile.writerow(['图1URL','图2URL','图3URL'...])写入表头行,列数匹配你爬取的商品最多的图片数量即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:54:03