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

Scrapy爬虫爬取IMDb电影标题无法逐行保存至CSV的问题求助

解决Scrapy爬取IMDb标题保存CSV的问题

问题根源

用.get()只会提取单个匹配元素,所以仅返回第一个电影标题;用.getall()会得到所有标题的列表,但Scrapy默认将列表作为单个字段值写入CSV,导致所有标题挤在同一单元格。

正确处理方式

核心是遍历.getall()获取的标题列表,为每个标题生成独立的Item对象,这样Scrapy会自动将每个Item对应为CSV的一行。

修改代码示例

假设你已定义基础Item类:

import scrapy

class ImdbItem(scrapy.Item):
    title = scrapy.Field()

修改爬虫的parse方法:

def parse(self, response):
    # 替换为你实际使用的标题CSS/XPath选择器
    title_list = response.css('td.titleColumn a::text').getall()
    # 遍历每个标题,生成单独的Item
    for title in title_list:
        # 方式1:直接生成字典(无需Item类也可)
        yield {
            'title': title.strip()  # 去除标题前后空白字符
        }
        # 方式2:使用定义好的Item类
        # item = ImdbItem()
        # item['title'] = title.strip()
        # yield item

注意事项

  • 不要直接将整个标题列表赋值给Item字段,必须逐个遍历生成独立的Item。
  • 用strip()处理标题的前后空白,避免CSV中出现多余空格或换行符。

运行命令

保持你原有的命令即可:

scrapy crawl imdb_hm -O imdb.csv

执行后每个电影标题会单独占据CSV的一行,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:46:08