gpt4 book ai didi

ruby - 需要帮助通过 Nokogiri 导出解析结果,并导出为 CSV。只显示最后解析的结果,为什么?

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:57 25 4
gpt4 key购买 nike

这让我很难受,在这里搜索,大 G 更让我困惑。

我遵循了 Railscasts #190 上的教程在 Nokogiri 上,并且能够为自己编写一个不错的小解析器:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "http://www.target.com/c/movies-entertainment/-/N-5xsx0/Ntk-All/Ntt-wwe/Ntx-matchallpartial+rel+E#navigation=true&facetedValue=/-/N-5xsx0&viewType=medium&sortBy=PriceLow&minPrice=0&maxPrice=10&isleaf=false&navigationPath=5xsx0&parentCategoryId=9975218&RatingFacet=0&customPrice=true"

doc = Nokogiri::HTML(open(url))
puts doc.at_css("title").text
doc.css(".standard").each do |item|

title = item.at_css("span.productTitle a")[:title]
format = item.at_css("span.description").text
price = item.at_css(".price-label").text[/\$[0-9\.]+/]
link = item.at_css("span.productTitle a")[:href]

puts "#{title}, #{format}, #{price}, #{link}"

end

我对结果很满意,并且能够在 Windows 控制台中看到它。但是,我想将结果导出到 CSV 文件并尝试了多种方法(没有运气),我知道我遗漏了一些东西。我最新更新的代码(下载 html 文件后)如下:

require 'rubygems'
require 'nokogiri'
require 'csv'

@title = Array.new
@format = Array.new
@price = Array.new
@link = Array.new

doc = Nokogiri::HTML(open("index1.html"))
doc.css(".standard").each do |item|
@title << item.at_css("span.productTitle a")[:title]
@format << item.at_css("span.description").text
@price << item.at_css(".price-label").text[/\$[0-9\.]+/]
@link << item.at_css("span.productTitle a")[:href]
end

CSV.open("file.csv", "wb") do |csv|
csv << ["title", "format", "price", "link"]
csv << [@title, @format, @price, @link]
end

它工作并为我吐出一个文件,但只是最后的结果。我遵循了 Andrew!: WEb Scraping... 上的教程并且试图将我正在尝试实现的目标与其他人的过程混合在一起是令人困惑的。

我假设它循环遍历所有结果并且只打印最后一个。有人可以指导我应该如何循环这个(如果这是问题所在)以便所有结果都在各自的列中吗?

提前致谢。

最佳答案

您将值存储在四个数组中,但在生成输出时并未枚举数组。

这里是一个可能的修复:

CSV.open("file.csv", "wb") do |csv|
csv << ["title", "format", "price", "link"]
until @title.empty?
csv << [@title.shift, @format.shift, @price.shift, @link.shift]
end
end

请注意,这是一种破坏性操作,一次将值从数组中移出,因此最后它们都将为空。

有更有效的方法来读取和转换数据,但现在这有望满足您的需求。

关于ruby - 需要帮助通过 Nokogiri 导出解析结果,并导出为 CSV。只显示最后解析的结果,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16576141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com