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