Nokogiri

sparklemotion/nokogiri: Nokogiri (鋸) is a Rubygem providing HTML, XML, SAX, and Reader parsers with XPath and CSS selector support. – GitHub

Tutorials – Nokogiri 鋸 (en) [Official]

Cheat sheet · sparklemotion/nokogiri Wiki – GitHub

リファレンス

Documentation for sparklemotion/nokogiri – RubyDoc.info

Nokogiri の使い方

url = 'https://www.yahoo.co.jp/'
charset = nil
html = open(url) do |f|
    charset = f.charset
    f.read
end
doc = Nokogiri::HTML.parse(html, nil, charset)
title = doc.title

参考:

Nokogiriを使ったRubyスクレイピング [初心者向けチュートリアル] | 酒と涙とRubyとRailsと

Nokogiriで文字化けを防ぐ – Qiita

Nokogiri(Ruby)の使い方 – Rubyでクローラーを作る – – Qiita

Nokogiriでスクレイピング – Qiita

Nokogiriを使ったRubyでのスクレイピング 〜初心者編〜 – HETAREDREAM

nokogiriを使ったスクレイピング入門 – gaaamiiのブログ

rubyのnokogiriとcssセレクタ – 社内泊エンジニアのチラ裏

Nokogiriの覚書 – 旧toyoshiの日記

Ruby製の構文解析ツール、Nokogiriの使い方 with Xpath – プログラマでありたい

HTMLの簡単な解析 (Nokogiri, ruby) – Qoosky

RubyでWebスクレイピング – yhara.jp

nokogiri 基礎 – Qiita

スクレイピングのためのNokogiri利用メモ – それはそれ。これはこれ。

Nokogiriを使用したクローラーめも – Qiita

parse

参考:

Method: Nokogiri::HTML.parse — Documentation for sparklemotion/nokogiri | RubyDoc.info

css

#css(*args) ⇒ Object
node.css('title')
node.css('body h1.bold')
node.css('div + p.green', 'div#one')

参考:

css – Module: Nokogiri::XML::Searchable — Documentation for sparklemotion/nokogiri

at_css

#at_css(*args) ⇒ Object

参考:

at_css – Module: Nokogiri::XML::Searchable — Documentation for sparklemotion/nokogiri

parent

参考:

NokogiriでDOM要素の深さを知る方法 – Qiita

Get parent element from HTML using Nokogiri – Stack Overflow

ノードの判定

ノードが見つかったかどうかの判定には empty? もしくは present? を使う。

参考:

Nokogiriを使ってるとよく出るエラー lib/nokogiri/xml/node_set.rb:164:in `attr’: undefined method `attribute’ for nil:NilClass (NoMethodError) – Qiita

ノードの削除

#remove ⇒ Object
#unlink ⇒ Object
alias :remove :unlink

参考:

Method: Nokogiri::XML::Node#remove — Documentation for nokogiri (1.8.2)

Method: Nokogiri::XML::NodeSet#remove — Documentation for nokogiri (1.8.2)

Method: Nokogiri::XML::Node#unlink — Documentation for nokogiri (1.8.2)

Method: Nokogiri::XML::NodeSet#unlink — Documentation for nokogiri (1.8.2)

Nokogiri で任意の node を削除する – Secret Garden(Instrumental)

ノードをアンラップする

ノードをノード内のコンテンツと置き換えます

node.replace(node.children)

参考:

ruby – Remove a tag but keep the text – Stack Overflow

ノードを複製する (dup)

参考:

Method: Nokogiri::XML::Node#dup — Documentation for sparklemotion/nokogiri | RubyDoc.info

Method: Nokogiri::XML::NodeSet#dup — Documentation for sparklemotion/nokogiri | RubyDoc.info

contains

指定したテキストを含むノードを選択する

doc.css('div:contains("text")')

参考:

Nokogiri: How to select nodes by matching text? – Stack Overflow

has

doc.css('div:has(.inner)')

参考:

:has CSS pseudo class in Nokogiri – Stack Overflow

:has() selector should match against all descendants, not just direct children · Issue #350 · sparklemotion/nokogiri – GitHub

Should support CSS selector: parent:has(>child) · Issue #688 · sparklemotion/nokogiri – GitHub

each

参考:

Method: Nokogiri::XML::NodeSet#each — Documentation for sparklemotion/nokogiri | RubyDoc.info

attr

#attr(key, value = nil, &blk) ⇒ Object

参考:

Method: Nokogiri::XML::NodeSet#attr — Documentation for sparklemotion/nokogiri | RubyDoc.info

remove_attribute

参考:

Method: Nokogiri::XML::Node#remove_attribute — Documentation for nokogiri | RubyDoc.info

ノードの style を扱う

参考:

Strip style attributes with nokogiri – Stack Overflow

Using Nokogiri to iterate through style attributes – Stack Overflow

to_html

参考:

Method: Nokogiri::XML::Node#to_html — Documentation for sparklemotion/nokogiri | RubyDoc.info

Method: Nokogiri::XML::NodeSet#to_html — Documentation for sparklemotion/nokogiri | RubyDoc.info

Method: Nokogiri::XML::DocumentFragment#to_html — Documentation for sparklemotion/nokogiri | RubyDoc.info

Method: Nokogiri::HTML::Builder#to_html — Documentation for sparklemotion/nokogiri | RubyDoc.info

write_to

参考:

write_to – Class: Nokogiri::XML::Node — Documentation for sparklemotion/nokogiri | RubyDoc.info

has

参考:

:has CSS pseudo class in Nokogiri – Stack Overflow

contains

参考:

Nokogiri: How to select nodes by matching text? – Stack Overflow

self::node()

参考:

特定の単語を含むリンクをどうやって得るか – rubikitch

Tagged:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です