ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

open-uriライブラリ

今回はWebページからHTMLコードを取得する方法を考える。

目次


open-uriライブラリ

open-uriライブラリを使うと簡単にWebページを開くことができる。
リファレンスマニュアルは次のとおり。

Rubyリファレンスマニュアル
open-uriライブラリ
https://docs.ruby-lang.org/ja/latest/library/open=2duri.html

open-uriライブラリを使うときの注意。
注意
Webサイトの情報を自動で取得する行為はクローリングと言われています。
クローリングを行う際は著作権法に則る必要があります。
またWebサイトに頻繁にアクセスを繰り返すと業務妨害の罪に問われたり、損害賠償を請求される場合もあります。

open-uriライブラリのopenメソッド

open-uriは標準添付ライブラリなのでrequireするだけですぐに使える。
open-uriライブラリのopenメソッドを使うとWebページのHTMLコードを取得できる。
書式は次のとおり。

require 'open-uri'
open("URL")


openメソッドの引数に開きたいWebページのURLを入れるだけ。
開いたあとは通常のファイルを開いたときと同じように扱える。

実際にコードを書く。
HTMLコードは著作物なので無断で転載できません。具体的なURLとHTMLコードは伏せます。

require 'open-uri'

open("URL") do |html|
    puts html.read
end
sleep(1)


実行結果

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title> ----- </title>
    ---省略---
</head>
<body>
    ---省略---
</body>
</html>


コードの説明。

  • requireでopen-uriライブラリを呼び出す
  • open-uriライブラリのopenメソッドでWebページを開く
    • openメソッドはブロックをつけることができる
    • 引数にURLを文字列でいれる
  • readメソッドで読み込んだHTMLコードをputsメソッドで出力する
  • ブロックなので自動でWebページが閉じる
  • sleepメソッドで1秒間停止させる
    • sleepメソッドは引数の秒数だけRubyコードの実行を停止させる
    • 誤ってコードが連続実行されたときに備えて念のためsleepさせている


実行するとターミナル/PowerShellにHTMLコードが表示される。

これでデータの取得が楽にできる。

今回の動作確認環境

Ruby 2.4.3p205
macOS 10.13.4
ターミナル 2.8.2
Windows10 1709
Windows PowerShell 5.1