【发布时间】:2014-11-29 01:50:17
【问题描述】:
我正在使用 Rake 任务,该任务运行多个抓取脚本并将站点的 35 个不同城市的类别数据导出到 35 个不同的 CSV 文件。
我遇到的问题是,当我从文件夹的根目录运行主 Rake 任务时,它会在父目录“resultsForCity.csv”中创建一个新文件,而不是在给定的目录中查看当前的 CSV 文件子文件夹并将数据添加到其中。为了解决这个问题,我认为我应该让我的主 Rake 任务(在父目录中)运行从属 Rake 任务,然后运行抓取脚本,但这也不起作用。
但是,如果我 cd 进入其中一个城市文件夹并从那里运行刮板或 Rake 任务,它会将数据添加到位于该子文件夹中的相应 CSV 文件中。我没有明确定义依赖关系或其他东西吗?
我尝试过的事情:
- 我已经尝试在我的主 rake 任务中要求每个单独的 rakefile。
- 尝试遍历所有文件并加载 rake 任务并收到堆栈太深的错误。
- 尝试在 Stackoverflow 上搜索 7 天。
这是我的 Rake 任务代码:
require "rake"
task default: %w[getData]
task :getData do
Rake::FileList.new("**/*.rb*").each do |file|
ruby file
end
end
这是我的爬虫代码:
require "nokogiri"
require "open-uri"
require "csv"
url = "http:// example.com/atlanta"
doc = Nokogiri::HTML(open(url))
CSV.open("resultsForAtlanta.csv", "wb") do |csv|
doc.css(".tile-title").each do |item|
csv << [item.text.tr("[()]+0-9", ""), item.text.tr("^0-9$", "")]
end
doc.css(".tile-subcategory").each do |tile|
csv << [tile.text.tr("[()]+0-9", ""), tile.text.tr("^0-9$", "")]
end
end
任何帮助都将不胜感激。
【问题讨论】:
-
这不是一个真正的 Nokogiri 或 CSV 问题。虽然它们在您调用的代码中使用,但它们与您并行运行它们的问题无关,因此将它们放在标签中没有必要,甚至是一个好主意。