参考になったサイト
下記のサイトを参考に順当にやっていきました。
個人的につまずいたところに関しては、記事の後ろの方に書いています。
・Nokogiriを使ったRubyスクレイピング作成の手順がわかりやすく解説されています。
https://morizyun.github.io/blog/ruby-nokogiri-scraping-tutorial/index.html#5
・nokogiriの利用方法についてより詳しく解説されています。
http://otn.hatenablog.jp/entry/20090509/p1
・xpathの指定方法が載っています。
https://qiita.com/rllllho/items/cb1187cec0fb17fc650a
実際のコード
今回はrailsチュートリアルというサイトのある文字を抽出してみました。
require 'open-uri'
require 'nokogiri'
# スクレイピング先のURL
url = 'https://railstutorial.jp'
charset = nil
html = open(url) do |f|
charset = f.charset # 文字種別を取得
f.read # htmlを読み込んで変数htmlに渡す
end
# htmlをパース(解析)してオブジェクトを作成
doc = Nokogiri::HTML.parse(html, nil, charset)
doc.xpath('//ul[@class="progress"]').each do |node|
# tilte
p node.css('a').inner_text
p node.xpath('//a[@href="/trial"]').inner_text
end
# doc.xpath('//li[@class="mdTopMTMList01Item"]').each do |node|
# # tilte
# p node.css('h3').inner_text
# # 記事のサムネイル画像
# p node.css('img').attribute('src').value
# # 記事のサムネイル画像
# p node.css('a').attribute('href').value
トラブルやつまずいたところ
・gemを使ってnokogiriをインストールする際に、rubyのバージョンが最新のものではなかったので、rubyの更新をしました。
・xpathの指定方法が分からなかったので、参考サイトに載っているコードをみて見るだけでなく、xpathの指定方法を改めて調べてみました。