nokogiriという便利なrubyライブラリで、スクレイピング(Webサイトの情報解析、抽出)
を行ってみた。
事前準備
gemにてnokogiriをインストール
gem install nokogiri
コード
koooza.rb
require 'open-uri' require 'nokogiri' # 対象のURL url = 'https://koooza.net/' charset = nil html = open(url) do |f| charset = f.charset # 文字種別を取得 f.read # htmlを読み込んで変数htmlに渡す end # html解析用のオブジェクト作成 doc = Nokogiri::HTML.parse(html, nil, charset) titles = [] #h2(classがheading heading-archive)の要素(部分)を取得し、その要素ごとにブロックを実行 doc.xpath('//h2[@class="heading heading-archive"]').each do |node| #取得した要素のうち、aタグのなかのテキスト部分を取得 title = node.css('a').inner_text #そのaタグの中のテキストをtitles配列に入れ込む titles << title end #入れ込んだtitles配列をファイルに書き込む titles.each do |text| File.open("koooza_title.txt","a") do |f| f.puts text end end
doc.xpath('//h2[@class="heading heading-archive"]').each do |node|
の h2[@class="heading heading-archive] 部分はChromeの検証ツールで確認
実行
ruby koooza.rb
結果
koooza_title.txt
rubyとseleniumでブラウザ操作 CSS-classとidの使い分け HTML-hrタグ FlexBox-CSS CSS 中央寄せ Ruby関数 ファイル操作 さくらエディタのRuby用設定 Ruby関数 begin ~ rescue ~ end RubyクラスーDATE Ruby関数 shift pop include? uniq
すごい便利だ。
何に使うか思いつかないけど。