rubyのeachを使用したファイルの結合方法について
勉強でruby言語を使用して、webスクレイピングに挑戦しております。
googleから検索を行い、以下の様なCSVファイルを作成するイメージです。
★CSV出力イメージ(※左から「タイトル」,「URL」,「文面」)
google,www.google.co.jp,世界中のあらゆる情報を検索するためのツールを提供しています。
each
を使用して出力ファイルを作成して、
別のプログラムから3個のファイルを1つのファイルに結合しようとしました。
そうすると3個のファイルの検索順序があっていないことがわかりました。
【出力結果のイメージ】
■タイトル.txt
タイトル1:a
タイトル2:b
タイトル3:c
■URL.txt
URL1:a
URL3:c
URL2:b
■文面.txt
文面1:a
文面2:b
文面3:c
そこで、検索結果を1個の出力ファイルに集約しようとしたのですが、
下記ソースで実行した結果こうなってしまいました。
【出力結果のイメージ】
■まとめ.txt
タイトル1:a
タイトル2:b
タイトル3:c
URL1:a
URL2:b
URL3:c
文面1:a
文面2:b
文面3:c
完成系としては、以下の様にしたいと思ってます。
■まとめ完成系.txt
タイトル1:a,URL1:a,文面1:a
タイトル2:b,URL2:b,文面2:b
タイトル3:c,URL3:c,文面3:c
いくらやってもうまくいかないので、ご質問させていただきました。
初心者的な質問で恐縮ですが、どなたかアドバイスをいただけないでしょうか?
作成したソースを記載いたします。
ご教示の程、よろしくお願いいたします
※rubyのバージョンは2.1.5p273です。
★ソース
rec = 'https://www.google.com/search?q=google&oe=utf-8&hl=ja'
count = 0
ST = "&start="
#ファイルクリア
File.open("/src/out/all","w")
#検索処理
for i in 1..2
#String型に変換して結合
search = rec.to_s + ST.to_s + count.to_s
#google検索する文字コードを変換
escaped_url = URI.escape(search)
count += 10
doc = Nokogiri::HTML(open(escaped_url))
#タイトル取得
doc.xpath('//h3/a').each do |link|
$cont = []
$cont.push
$cont.push(link.content)
$stdout = File.open("/src/out/all","a")
puts $cont[0]
$stdout = STDOUT
end
#URLの取得
doc.xpath('//div[1]/cite').each do |url|
$ul = []
$ul.push
$ul.push(url.content)
$stdout = File.open("/src/out/all","a")
puts $ul[0]
$stdout = STDOUT
end
#文章の取得
doc.xpath('//div/span').each do |link|
$body= []
$body.push(link.content)
$stdout = File.open("/src/out/all","a")
puts $body[0]
$stdout = STDOUT
end
end
以上 よろしくお願いいたします。