スクレイピングまとめ
スクレイピング
概要 Web上の特定のデータを抽出すること
言語 Ruby
require Nokogiri open-uri
方法
あるサイトに複数の記事があり、その記事のタイトル、urlをスクレイピングしたいとする。
はじめに必要なことは、そのタイトルとurlのセレクタを知ることで、その条件と方法。
まず、条件は複数の記事に共通のセレクタをとること。
→クローラーはセレクタを目印に巡回しているので、各自共通のセレクタにしないとなにを目印にすればいいかわらなくなるから。
次にその方法
データを取りたいWebサイト上で要素の検証
虫眼鏡をクリック
タグが欲しい箇所をクリック
右画面にセレクタが表示される
他の記事にも同じものがあるか確認
後は、Rubyに記述する方法
必要なものをrequireする
uri = スクレイピングしたいサイトのurl を書く
doc = Nokogiri::HTML(open(uri),nil,"utf-8") を書く
→多分、Nokogiriで指定されたurlの情報をdocにほうりこんでる
doc.css("セレクタA").each do |node|
→このセレクタAは、タイトルとurlセレクタを含むタグより上の階層で複数の記事に共通するセレクタ(この条件にあてはあはまるのは1つとは限らない)
row = []
row.push(node.css("セレクタ B").text)
→今回だと、titleのセレクタ .textはテキスト部分だけを抽出してくれる
row.push(node.css("セレクタC").attribute("src").value)
row.push(node.css("セレクタD").attribute("href").value)
→srcタグとhrefタグの書き方の例
puts row.join("¥t)
→タブ区切りにした
end