Webページから指定したタグの要素を抜き出すRuby関数

Sponsored Link

このエントリーをはてなブックマークに追加
はてなブックマーク - Webページから指定したタグの要素を抜き出すRuby関数
Bookmark this on Delicious
Share on LinkedIn
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark

単一のWebページから抜き出した複数の要素を配列に格納して返します。
以下の例はaタグの要素(エレメント)を抽出した場合です。

Rubyコード

require 'net/http'
require 'kconv'

def parse_array(string, beg_tag, close_tag)
  array = Array.new
  string.scan(/#{beg_tag}(.*?)#{close_tag}/sm) { |matched|
    #puts matched
    array = array | matched
  }
  return array
end

Net::HTTP.version_1_2
Net::HTTP.start('b.hatena.ne.jp', 80) {|http|
  response = http.get('/hotentry/')
  str = Kconv.tosjis(response.body)
  a_tag_array = parse_array(str, "<a href="http://www.yukun.info/blog">" )
  puts a_tag_array
}

学んだこと

  • Net::HTTP.startメソッドをブロックを用いて呼び出すことによって、ブロックの間だけセッションを開いて接続し、ブロック終了とともに自動的にセッションを閉じる。Rubyに慣れてもJavaやCでの手続きを意識しておくこと。
  • 配列の結合には和集合(演算子は「|」)を用いた。この場合、重複する要素は1つとして数えられる。別々に数えたい場合は「+」演算子を用いる。
  • String#scanメソッドはブロックで用いるとブロック変数にマッチした部分を格納する。その際、正規表現の中で「()」が用いられると、()内の部分を配列にして返す。今回は別に配列にする必要はなかったかも。

参考サイト

Web サーバからドキュメントを得るRubyist Magazine – 標準添付ライブラリ紹介 【第 7 回】 net/http

関連すると思われる記事:

Sponsored Link

This entry was posted in Ruby and tagged , , , . Bookmark the permalink.

Facebook comments:

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>