0

我正在抓取网页http://h10010.www1.hp.com/wwpc/ie/en/ho/WF06b/321957-321957-3329742-89318-89318-5186820-5231694.html?dnr=1

完整代码位于https://gist.github.com/3156035

该网页使用没有 CSS 的老式 html 表格,因此我使用 xpath 查找某些关键字(线索),然后定位下一个元素。然后将关键字输入以下循环

clues.each do |clue|
  #putting the output into quotes, incase the content contains a comma!
  csv_text << "\"#{doc.at_xpath("//td[text()='#{clue}']/following-sibling::td").text.strip}\""
  csv_text << ", " unless clues.last == clue
end

由于数组使用 a 分隔值,因此,我可以将每个值添加到 csv 中自己的单元格中,这可以正常工作,但单元格保修显示为“1 年,取件和退货,零件和人工”

代码将其切碎并将其放入 3 个单元格中:“1 年”,然后是“取货和退货”,然后是“零件和人工”

我想要的是让它保持一个单元格:“1 年,取件和退货,零件和人工”

如何更改代码以匹配单元格中的逗号?

4

1 回答 1

1

令人困惑的部分是,当您真正询问如何创建正确的 CSV 时,您将其视为 Nokogiri 问题。

我建议使用 CSV 库:

CSV.open("path/to/output.csv", "wb") do |csv|
  #loop here over all your pages to scrape
    csv << clues.map{|clue| doc.at("//td[text()='#{clue}']/following-sibling::td").text.strip}
  #end loop
end

这将自动创建有效的 CSV,其中包含正确引用的任何包含逗号的条目。

于 2012-07-24T12:26:15.313 回答