RubyとNokogiriを使ってHTML解析・スクレイピングをしよう

Ruby

この記事ではRubyのgemであるNokogiriを使ってHTML解析やスクレイピングをしてみようと思います。

Nokogiriのインストール

まずはNokogiriをインストールします。

$ gem install nokogiri

これでインストール完了です。
それでは実際に使っていきましょう。

簡単なHTMLでNokogiriを試してみる

まずは簡単なHTMLでどのようにNokogiriを使うのか試してみましょう。

require 'nokogiri'

# HTMLを解析する場合
html = Nokogiri::HTML("<html><body><h1>Hello Nokogiri</h1><p><a href='https://example.com'>How to parse HTML</a></p></body></html>")

html.at_css("h1").text # => "Hello Nokogiri"
html.css("p").first.text # => "How to parse HTML"
html.css("p a").attribute('href').value # => "https://example.com"

上記のコードのように、at_cssを使うとHTML文章の中から1番最初に出てくる要素をCSSの形式で検索することが出来ます。
また、cssを使うとHTML文章内から複数要素を取得することが出来ます。
属性を取得するためにはattributeを使います。属性の中身を取得したいときはvalueを使うと取得出来ます。

HTML文章の検索の方法は、xpath形式css形式があるのですが、ウェブ制作者などであればいつも使い慣れているcss形式がよいでしょう。

実際にGoogleのサイトからロゴのパスを取得してみましょう。

実際に解析してみる

それでは実際に解析してみましょう。
ウェブサイトの解析をする場合はhttpなどからデータを取得する必要があるので、open-uriを使用しています。

require 'open-uri'
require 'nokogiri'

url = 'https://www.google.com/'
charset = nil
html = open(url) do |h|
  charset = h.charset
  h.read
end
doc = Nokogiri::HTML.parse(html, nil, charset)

puts doc.at_css("#hplogo").attribute('src').value
# => /logos/doodles/2018/world-cup-2018-day-11-5692104616443904-5688737870643200-ssw.png

参考リンク

RubyでHTTPメソッド(GETやPOSTなど)を送る方法

Ruby

Rubyでプログラムを書くときにGETやPOSTなどのHTTPメソッドを送りたいときがあるかと思います。そのようなときに便利なのが標準ライブラリのnet/httpです。今回はこのライブラリを使ってGET, POST, PATCH, PUT, DELETEメソッドを送るにはどうしたらよいのかを記述します。
Continue reading “RubyでHTTPメソッド(GETやPOSTなど)を送る方法”

Rubyでファイルの先頭や後ろに追記する方法

Ruby

Rubyでプログラムを書くとき、しっかり運営していくものであればデータベースを使ったほうがいいですが、簡易的なシステムを組んだり一度組んだら捨ててしまうような場合のときにデータベースを使うのは少し面倒なときがあります。そんなときにファイルを簡易的なデータベースとして使うこともありますが、今回はそのようなときに使えるファイルの先頭や後ろに追記する方法を学びます。
Continue reading “Rubyでファイルの先頭や後ろに追記する方法”

Rubyでインターネット上の画像をローカルに保存するためには

Ruby

RubyはRuby on Railsなどを用いてWebアプリケーションを作るのにも優れていますが、簡単なタスクをさくっとプログラムするのにも向いています。今回はRubyを用いてローカルに画像を保存するためにはどうしたらよいか学んでいきましょう。
Continue reading “Rubyでインターネット上の画像をローカルに保存するためには”

RubyでAddressable gemを使ってURIの取り扱いを楽にしよう

Ruby

RubyでURIを処理したいときは標準ライブラリのURIを使うことが多いですが、Addressable gemを使うことでより完結にわかりやすくコードを書くことが出来ることもあります。今回はそんなAddressable gemの使い方を学んでいきましょう。

Addressable gem

インストール

Addressableはgemなのでインストールが必要です。コマンドラインからaddressableをインストールしましょう。

$ gem install addressable

Adressable::URIの使い方

使用前にはrequireが必要です。そこに注意しましょう。
例えば以下のようにURIをparseすることが出来ます。

require 'addressable/uri'

uri = Addressable::URI.parse("https://www.example.com/path/to/end.html?test=1&test2=2")

uri.scheme # => "https"
uri.host # => "www.example.com"
uri.path # => "/path/to/end.html"

# 拡張子があれば拡張子だけ抜き出すことが出来る
uri.extname # => ".html"

uri.query_values # => {"test"=>"1", "test2"=>"2"}

個人的に嬉しいポイントとしてはqueryをHash形式で操作することが出来るところです。

例えばURIのqueryを追加・削除したいとき

query_valuesに代入も出来るのでここにHashを追加・削除してあげることであらたにqueryを追加・削除することが出来ます。簡単。幸せ。

require 'addressable/uri'
 
uri = Addressable::URI.parse("https://www.example.com/path/to/end.html?test=1&test2=2")
 
# queryを追加する
queries = uri.query_values
queries["test3"] = 3
uri.query_values = queries
uri.to_s # => "https://www.example.com/path/to/end.html?test=1&test2=2&test3=3"
 
# queryを削除する
queries.delete("test2")
uri.query_values = queries
uri.to_s # => "https://www.example.com/path/to/end.html?test=1&test3=3"

例えばURIのqueryを全削除したいとき

Hashをnilにしてあげればqueryを全削除することが出来ます。幸せ。

require 'addressable/uri'
 
uri = Addressable::URI.parse("https://www.example.com/path/to/end.html?test=1&test2=2")
 
# query_valuesにnilを追加するとqueryを全削除する
uri.query_values = nil
uri.to_s # => "https://www.example.com/path/to/end.html"

まとめ

Rubyの強みはコミュニティの強さ・gemの豊富さだと思います。なので使えるものは使って速く実装出来るときは使えばよいかと思います。
またこれらの機能を自分ならどう実装するかを考えてみるのもプログラミング能力向上によいトレーニングかと思いますのでぜひ考えてみてください。

【Ruby on Rails入門編】 macOS SierraにRailsをインストールしてみよう!

Ruby Ruby on Rails

こんにちは!

Ruby on Railsをいざ始めよう!と思ったとき、まずどのように動かしていいかわからない方も多いと思います。
この記事では、何もインストールされていないmac OS SierraにRailsをインストールする方法をご紹介します。

大まかな流れとしては、

  1. コマンドラインツールのインストール
  2. Homebrewのインストール(Git, readline, openssl等)
  3. Rubyのインストール
  4. Ruby on Railsのインストール

という手順で完了します。

Continue reading “【Ruby on Rails入門編】 macOS SierraにRailsをインストールしてみよう!”

Rails初心者にオススメのテキストエディタはこれ!厳選エディタ4選

Ruby on Rails

みなさんこんにちは!

これからプログラミングを始めようとしている方やRuby on Railsなどを始めようとしているプログラミング初心者の方がよく困りがちなのが、どのテキストエディタを使えばよいのか、ということです。
この記事では、そんなあなたにピッタリのテキストエディタを厳選してご紹介いたします!
Continue reading “Rails初心者にオススメのテキストエディタはこれ!厳選エディタ4選”