0

http://h10010.www1.hp.com/wwpc/ie/en/ho/WF06b/321957-321957-3329742-89318-89318-5186820-5231694.html?dnr=1のWebページをスクレイピングしています

このための完全なコードはhttps://gist.github.com/3156035にあります

このWebページは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

配列,は、csv内の独自のセルに各値を追加できることを使用して値を分離するため、これは正常に機能しますが、セルの保証は「1年間、受け取りと返却、部品と作業」と表示されます。

コードはそれを切り刻んで3つのセルに入れています:「1年」、「ピックアップして返却」、「部品と労働」

私が望んでいるのは、それを単一のセルとして保持することです。「1年間、集荷と返却、部品と労働」

セル内のコンマと一致しないようにコードを変更するにはどうすればよいですか?

4

1 に答える 1

1

紛らわしいのは、適切なCSVを作成する方法を実際に尋ねているときに、これをノコギリの質問として提示していることです。

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 に答える