【Nokogiri】スクレイピングして複数ある要素の最初の1つを取得したい


状況

Nokogiriでスクレピングしてogp情報を取得したところ、
対象のサイトのog:imageが複数あったため、
結果が複数URLを連結した文字列となってしまった。
(連結した文字列になったのは私のせいです...)
一つ目のURLだけ欲しいのに!!
という時です。

結論

at_cssを使う。です。

html = open('nokogiri_practice.html').read
doc = Nokogiri::HTML.parse(html)

doc.at_css('//meta[property="og:image"]/@content')

at_css, css

at_csscssはcssセレクタで指定した要素を取得するメソッドです。

at_css

at_cssは複数ある要素のうち、最初の要素を取得してくれます。
指定の要素がない場合はnilを返します。

css

cssは指定した要素を配列型式で全て取得してくれます。
指定の要素がない場合は空の配列を返します。

参考

RubyでWebスクレイピング #3 Nokogiriを使いこなす