Nokogiri
参考:
目次
ドキュメント
参考:
Tutorials | Nokogiri [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 を使った Web スクレイピングの基礎・入門 | Madogiwa Blog
Nokogiri を使った Ruby でのスクレイピング 初心者編 | HETAREDREAM
nokogiri を使ったスクレイピング入門 | gaaamii のブログ
ruby の nokogiri と css セレクタ | 社内泊エンジニアのチラ裏
Ruby 製の構文解析ツール、Nokogiri の使い方 with Xpath | プログラマでありたい
スクレイピングのための Nokogiri 利用メモ | それはそれ。これはこれ。
Ruby の Nokogiri を使ってサイトをスクレイピングする | Think Big Act Local
parse
参考:
Method: Nokogiri::HTML.parse — Documentation for sparklemotion/nokogiri | RubyDoc.info
css
node.css(".nav .item") node.css("li + li > a") node.css("#name", "#age", "#address")
参考:
css – Module: Nokogiri::XML::Searchable — Documentation for sparklemotion/nokogiri
at_css
参考:
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?
を使う。
参考:
ノードの削除
参考:
Method: Nokogiri::XML::Node#remove — Documentation for nokogiri | RubyDoc.info
Method: Nokogiri::XML::NodeSet#remove — Documentation for nokogiri | RubyDoc.info
Method: Nokogiri::XML::Node#unlink — Documentation for nokogiri | RubyDoc.info
Method: Nokogiri::XML::NodeSet#unlink — Documentation for nokogiri | RubyDoc.info
Nokogiri で任意の node を削除する | Secret Garden (Instrumental)
ノードをアンラップする
ノードをノード内のコンテンツと置き換える。
node.replace(node.children)
参考:
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('something good')")
参考:
How to select nodes by matching text? – Stack Overflow
:has()
doc.css("div:has(.picture)")
参考:
:has CSS pseudo class in Nokogiri – Stack Overflow
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
要素の id
を取得する。
doc.css("#content").first.attr(:id) # => "content"
要素のクラスを取得する。
doc.css(".preview.picture").first.attr(:class) # => "preview picture"
参考:
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::HTML::Builder#to_html — Documentation for sparklemotion/nokogiri | RubyDoc.info
write_to
参考:
write_to – Class: Nokogiri::XML::Node — Documentation for sparklemotion/nokogiri | RubyDoc.info
self::node()
参考:
特定の単語を含むリンクをどうやって得るか | rubikitch
classes
参考:
Method: Nokogiri::XML::Node#classes — Documentation for sparklemotion/nokogiri | RubyDoc.info
attributes
全ての属性を、キーが属性名、値が Attr クラスのハッシュとして返す。
node_id = doc.css("#content").first.attributes["id"] node_id.class # => Nokogiri::XML::Attr node_id.to_s # => "content"
参考:
Method: Nokogiri::XML::Node#attributes — Documentation for sparklemotion/nokogiri | RubyDoc.info
Class: Nokogiri::XML::Attr — Documentation for sparklemotion/nokogiri | RubyDoc.info
Slop
参考:
ruby の Nokogiri をもっと簡単に!Slop する。| それマグで!
Method: Nokogiri.Slop — Documentation for sparklemotion/nokogiri | RubyDoc.info
JSON を抽出する
参考:
Extract some JSON using Nokogiri – Stack Overflow
JSON に変換する
to_xml
及び Hash.form_xml
を用いてハッシュに変換し、ハッシュから to_json
で JSON
に変換する。
require "active_support/core_ext/hash" Hash.from_xml(doc.to_xml).to_json
参考:
Method: Nokogiri::XML::Document#to_xml — Documentation for sparklemotion/nokogiri | RubyDoc.info
from_xml – Hash | Ruby on Rails API [Official]
instance method JSON::Generator::GeneratorMethods::Hash#to_json (Ruby 2.6.0)
JsonML – JSON Markup Language (jsonml.org)
How to convert Nokogiri Document object into JSON – Stack Overflow