前提・実現したいこと
スクレイピングで取り出した値を精査して、別のcsvに保存することを実現したいです。
スクレイピングでページ内すべてのURLを抜き出し、
内部リンクと外部リンクで別のCSVで保存したいです。
発生している問題
とりあえず、別別に保存はできたのですが、
このやりかたでOKなのかな?もっとスマートなやり方があるのかな?
と思ったので質問してみました。
該当のソースコード
Ruby
1ele = driver.find_elements(:xpath, '/html/body//a') #ここでページ内すべてのURLを取得している 2 3CSV.open("#{startTime.to_i}internal_link.csv","w") do |il| 4 CSV.open("#{startTime.to_i}external_link.csv","w") do |el| 5 6 ele.each do |e| 7 link = e.attribute('href') 8 if link.include?("https://xxxxx") 9 il << [link] 10 else 11 el << [link] 12 end 13 end 14 15 end 16end
たくさんのURLを入れるため、途中でコケても途中まではデータを残しておきたいので、
取得したURLを振り分けてCSVに書くという過程をつど行っています。
試したこと
ruby
1ele.each do |e| 2 link = e.attribute('href') 3 if link.include?("https://xxxxx") 4 ~ここにcsvを書き込む記述~ 5 else 6 ~ここにcsvを書き込む記述~ 7 end 8end
上記のようにeachでcsv書き込みメソッドを囲むと、
1行のURLが書かれているCSVで都度上書きしてしまうようで、
CSVで書き込むメソッドを2重にくくるのが正解なのかな?と思ったのですが、
違和感あったので一応ここに書いてみました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/30 03:38
2020/01/30 05:18
2020/01/30 05:56