うめすこんぶ

日々のプログラミングで残しておきたいメモ.何かの役に立てれば幸いです.

nokogiri.rbでgoogle検索結果の一覧表示

スポンサーリンク

nokogiri.rbの主な使用方法のまとめです。

##############################
### Nokogiriオブジェクト
##############################
# htmlをデータ抽出用のNokogiriオブジェクトに変換
doc = Nokogiri::HTML.parse("<h1 id='title'><a href='http://konbu13.hatenablog.com/'>プログラミングのメモ</a></h1>")

# webページをデータ抽出用のNokogiriオブジェクトに変換
doc = Nokogiri::HTML.parse(open("http://www.google.com/search?q=ruby&hl=ja"))

##############################
### CSSセレクタ
##############################
# ※CSSセレクタを使用すれば、任意の要素を抽出できます。
# XPATHで要素を選択する事もできますが今回は割愛。

# h3の要素をもつ要素を抽出する:
nodes = doc.css('h3')

# ※通常は、複数の要素がCSSセレクタの条件に該当するので、nodesは配列になっています。

# クラスが「r」の要素をもつ要素を抽出する:
nodes = doc.css('.r')

# idが「search」の要素をもつ要素を抽出する:
nodes = doc.css('#search')

# タグが「h3」でclass「r」である要素をもつ要素を抽出する:
nodes = doc.css('h3.r')

##############################
### 要素の操作
##############################
# 要素内の文字列を取り出す
node.text

# 要素をhtmlの文字列として取り出す
node.inner_html

# 親要素を取り出す
node.parent

# 子要素を取り出す
node.children

# 兄弟要素で自分の次の要素を取り出す
node.next.text

# 兄弟要素で自分の前の要素を取り出す
node.previous

# 要素の属性値を取り出す
node['class']

# 要素の属性値に値をセットする
node['class'] = 'foo'

# 要素の属性の配列を取り出す
node.keys

# 要素の属性値の配列を取り出す
node.values

# 要素の属性のハッシュを取り出す
node.attributes

##############################
### 連携
##############################
# タグが「h3」でclass「r」である要素をもつ要素の文字列を表示する
doc.css('h3.r').each do |n|
  puts n.text
end

参考