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

Ruby爬虫抓取Allocine电影标题存入CSV遇NoMethodError问题求助

解决你的CSV写入问题

嘿,我一眼就看到问题出在哪啦!你抓取电影标题的部分没问题,但写入CSV的时候踩了个小坑。

错误原因

Ruby的CSV库里,csv <<方法需要接收一个数组(用来表示一行里的各个列),但你现在直接把单个字符串(比如"Coco")传进去了,CSV内部会尝试对这个字符串调用map方法处理列,可字符串根本没有map方法,所以就报了undefined method 'map' for "Coco":String这个错。

修正后的代码

只需要把写入CSV的那行改一下,把单个字符串放进数组里就行:

require 'open-uri'
require 'nokogiri'
require 'csv'

url = "http://www.allocine.fr/film/meilleurs/"
html_file = open(url).read
html_doc = Nokogiri::HTML(html_file)

array = []
html_doc.search('.no_underline').each do |element|
  array << element.text.strip
end

puts array

csv_options = { col_sep: ',', force_quotes: true, quote_char: '"' }
filepath = 'allocine.csv'

CSV.open(filepath, 'wb', csv_options) do |csv|
  # 把单个字符串包装成数组,每一行存一个标题
  array.each { |item| csv << [item] }
end

关键修改点

原来的csv << item改成了csv << [item],这样每一次写入的都是一个包含单个元素的数组,CSV就能正确识别这是一行里的一列数据啦。

运行这个修正后的代码,你就能看到allocine.csv里整整齐齐地列着所有抓取到的电影标题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:27:26