簡體   English   中英

如何使用Nokogiri抓取網站並將數據輸出到xml文件?

[英]How do I scrape a website and output data to xml file with Nokogiri?

我一直在嘗試使用Nokogiri和HTTParty抓取數據,並且可以成功地從網站上抓取數據並將其打印到控制台,但是我不知道如何在回購中將數據輸出到xml文件。

現在,代碼如下所示:

class Scraper

  attr_accessor :parse_page

  def initialize
    doc = HTTParty.get("https://store.nike.com/gb/en_gb/pw/mens-nikeid-lifestyle-shoes/1k9Z7puZoneZoi3?ref=https%253A%252F%252Fwww.google.com%252F")
    @parse_page ||= Nokogiri::HTML(doc)
  end

  def get_names
    item_container.css(".product-display-name").css("p").children.map { |name| name.text }.compact
  end

  def get_prices
    item_container.css(".product-price").css("span.local").children.map { |price| price.text }.compact
  end

  private

  def item_container
    parse_page.css(".grid-item-info")
  end

  scraper = Scraper.new
  names = scraper.get_names
  prices = scraper.get_prices

  (0...prices.size).each do |index|
    puts " - - - Index #{index + 1} - - -"
    puts "Name: #{names[index]} | Price: #{prices[index]}"
  end

end

我嘗試更改.each方法以包括File.write(),但是它所做的全部就是將輸出的最后一行寫入xml文件。 對於如何正確解析數據的任何見解,我將不勝感激。

我嘗試更改.each方法以包括File.write(),但是它所做的全部就是將輸出的最后一行寫入xml文件。

each循環中each File.write方法嗎? 我猜這里正在發生的事情是您在每次迭代中都覆蓋文件,這就是為什么只看到最后一行的原因。

嘗試將each循環放入File.open方法的塊中,例如:

File.open(yourfile, 'w') do |file|
  (0...prices.size).each do |index|
    file.write("your text")
  end
end

我還建議閱讀有關Nokogiri :: XML :: Builder的信息 ,然后將其輸出保存到文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM