nokogiri
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(nokogiri);
*目次 [#c53d93ad]
#contents
*関連ページ [#j13318ad]
-[[Ruby]]
-[[Rails]]
-[[XPath]]
*参考情報 [#vdf1f104]
-[[Tutorials - Nokogiri 鋸:http://www.nokogiri.org/]]
-[[鋸の使い方 🪚 - Qiita:https://qiita.com/tommy-012/items...
*HTMLの解析 [#jbbb2018]
**基本 [#ibe68ab8]
-xpathあるいはcssで要素を指定できる。[[XPath]]
-xpathを指定。
#pre{{
html=<<__EOM__
<html>
<head><title>デモサイト</title></head>
<body>
<h1>見出し</h1>
<div class="container">
<div class="row">行1
</div>
<div class="row">行2
</div>
</div>
</body>
</html>
__EOM__
doc = Nokogiri::HTML.parse(html, nil, 'utf-8')
p doc.title
nodesets = doc.xpath("//div[@class='row']")
p nodesets.class
p nodesets.text
p nodesets.first.class
p nodesets.first.text
}}
-実行結果。
#pre{{
$ ruby demo.rb
"デモサイト"
Nokogiri::XML::NodeSet
"行1\n 行2\n "
Nokogiri::XML::Element
"行1\n "
}}
-複数マッチする場合は、Nokogiri::XML::NodeSet、一個の場合...
**Nokogiri::XML::Elementのメソッド [#n0e30ded]
***inner_html [#o4b0a059]
タグの内部(HTML残す)
***text [#t439c7f5]
テキスト化した内容
***to_html [#z4e66207]
-自分自身を含めたhmtl(outer_htmlか。これに該当するtext系...
**検索系メソッド [#c49b94f0]
-[[Module: Nokogiri::XML::Searchable — Documentation by Y...
-[[Searching a XML/HTML document - Nokogiri:https://nokog...
-cssかxpathを使用して検索できる。
-atとsearchは、cssとxpathどっちも指定できる。
-at、at_css、at_xpathは最初の1つを返す(なければnull)。sea...
***at [#q48109a0]
-XPath or CSSクエリで最初の要素を検索
***at_css [#w888e921]
-CSSクエリで最初の要素を検索
***at_xpath [#bebc4406]
-XPathで最初の要素を検索
***css [#r3145d5e]
-CSSクエリで複数要素を検索
***search [#rbe56093]
-XPath or CSSクエリで複数要素を検索
***xpath [#n8347510]
-XPathで複数要素を検索
*トラブルシューティング [#vea569ad]
**IMPORTANT! Nokogiri builds and uses a packaged version...
-nokogiriが自前パッケージ版のlibxml2を使っているらしい。[...
**Yosemite環境でインストールできない [#s1ccccff]
-railsなどをbundle installするときnokogiriが一緒にインス...
-失敗する場合、nokogiri単体でインストールして状況を確認
gem install nokogiri -v '1.6.5'
-以下のエラーメッセージでコンパイル失敗
#pre{{
checking for xmlParseDoc() in -llibxml2... no
-----
libxml2 is missing. Please locate mkmf.log to investigat...
-----
}}
-mkmf.logを確認すると(findで探せる)、libxml2が存在しない...
#pre{{
Undefined symbols for architecture x86_64:
"_iconv", referenced from:
_main in conftest-a4367a.o
"_iconv_open", referenced from:
_main in conftest-a4367a.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use...
checked program was:
}}
-homebrewを使ってlibiconvをむりくり認識させる解放はあるよ...
-とりあえず、環境変数を使って、システムライブラリを使うよ...
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
-もしくはつぎのように実行
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install --path ve...
*** extconf.rb failed *** [#ka5ec7fa]
Could not create Makefile due to some reason, probably la...
libraries and/or headers. Check the mkmf.log file for mo...
need configuration options.
}}
**macOS High Sierraでエラー [#i5276594]
2018/12/07(金)なぜかこれまで「 NOKOGIRI_USE_SYSTEM_LIBRAR...
#pre{{
Installing nokogiri 1.8.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native e...
current directory: /Users/sora/work/myproject/vendor/...
/Users/sora/.anyenv/envs/rbenv/versions/2.5.1/bin/ruby -r...
checking if the C compiler accepts ... yes
checking if the C compiler accepts -Wno-error=unused-comm...
Building nokogiri using system libraries.
pkg-config could not be used to find libxml-2.0
Please install either `pkg-config` or the pkg-config gem ...
gem install pkg-config -v "~> 1.1"
pkg-config could not be used to find libxslt
Please install either `pkg-config` or the pkg-config gem ...
gem install pkg-config -v "~> 1.1"
pkg-config could not be used to find libexslt
Please install either `pkg-config` or the pkg-config gem ...
gem install pkg-config -v "~> 1.1"
ERROR: cannot discover where libxml2 is located on your s...
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably la...
libraries and/or headers. Check the mkmf.log file for mo...
need configuration options.
}}
NOKOGIRI_USE_SYSTEM_LIBRARIESを指定しないか、以下のように...
gem install nokogiri -- --use-system-libraries --with-xm...
NOKOGIRI_USE_SYSTEM_LIBRARIESを指定しなければいいのだが原...
終了行:
&tag(nokogiri);
*目次 [#c53d93ad]
#contents
*関連ページ [#j13318ad]
-[[Ruby]]
-[[Rails]]
-[[XPath]]
*参考情報 [#vdf1f104]
-[[Tutorials - Nokogiri 鋸:http://www.nokogiri.org/]]
-[[鋸の使い方 🪚 - Qiita:https://qiita.com/tommy-012/items...
*HTMLの解析 [#jbbb2018]
**基本 [#ibe68ab8]
-xpathあるいはcssで要素を指定できる。[[XPath]]
-xpathを指定。
#pre{{
html=<<__EOM__
<html>
<head><title>デモサイト</title></head>
<body>
<h1>見出し</h1>
<div class="container">
<div class="row">行1
</div>
<div class="row">行2
</div>
</div>
</body>
</html>
__EOM__
doc = Nokogiri::HTML.parse(html, nil, 'utf-8')
p doc.title
nodesets = doc.xpath("//div[@class='row']")
p nodesets.class
p nodesets.text
p nodesets.first.class
p nodesets.first.text
}}
-実行結果。
#pre{{
$ ruby demo.rb
"デモサイト"
Nokogiri::XML::NodeSet
"行1\n 行2\n "
Nokogiri::XML::Element
"行1\n "
}}
-複数マッチする場合は、Nokogiri::XML::NodeSet、一個の場合...
**Nokogiri::XML::Elementのメソッド [#n0e30ded]
***inner_html [#o4b0a059]
タグの内部(HTML残す)
***text [#t439c7f5]
テキスト化した内容
***to_html [#z4e66207]
-自分自身を含めたhmtl(outer_htmlか。これに該当するtext系...
**検索系メソッド [#c49b94f0]
-[[Module: Nokogiri::XML::Searchable — Documentation by Y...
-[[Searching a XML/HTML document - Nokogiri:https://nokog...
-cssかxpathを使用して検索できる。
-atとsearchは、cssとxpathどっちも指定できる。
-at、at_css、at_xpathは最初の1つを返す(なければnull)。sea...
***at [#q48109a0]
-XPath or CSSクエリで最初の要素を検索
***at_css [#w888e921]
-CSSクエリで最初の要素を検索
***at_xpath [#bebc4406]
-XPathで最初の要素を検索
***css [#r3145d5e]
-CSSクエリで複数要素を検索
***search [#rbe56093]
-XPath or CSSクエリで複数要素を検索
***xpath [#n8347510]
-XPathで複数要素を検索
*トラブルシューティング [#vea569ad]
**IMPORTANT! Nokogiri builds and uses a packaged version...
-nokogiriが自前パッケージ版のlibxml2を使っているらしい。[...
**Yosemite環境でインストールできない [#s1ccccff]
-railsなどをbundle installするときnokogiriが一緒にインス...
-失敗する場合、nokogiri単体でインストールして状況を確認
gem install nokogiri -v '1.6.5'
-以下のエラーメッセージでコンパイル失敗
#pre{{
checking for xmlParseDoc() in -llibxml2... no
-----
libxml2 is missing. Please locate mkmf.log to investigat...
-----
}}
-mkmf.logを確認すると(findで探せる)、libxml2が存在しない...
#pre{{
Undefined symbols for architecture x86_64:
"_iconv", referenced from:
_main in conftest-a4367a.o
"_iconv_open", referenced from:
_main in conftest-a4367a.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use...
checked program was:
}}
-homebrewを使ってlibiconvをむりくり認識させる解放はあるよ...
-とりあえず、環境変数を使って、システムライブラリを使うよ...
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
-もしくはつぎのように実行
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install --path ve...
*** extconf.rb failed *** [#ka5ec7fa]
Could not create Makefile due to some reason, probably la...
libraries and/or headers. Check the mkmf.log file for mo...
need configuration options.
}}
**macOS High Sierraでエラー [#i5276594]
2018/12/07(金)なぜかこれまで「 NOKOGIRI_USE_SYSTEM_LIBRAR...
#pre{{
Installing nokogiri 1.8.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native e...
current directory: /Users/sora/work/myproject/vendor/...
/Users/sora/.anyenv/envs/rbenv/versions/2.5.1/bin/ruby -r...
checking if the C compiler accepts ... yes
checking if the C compiler accepts -Wno-error=unused-comm...
Building nokogiri using system libraries.
pkg-config could not be used to find libxml-2.0
Please install either `pkg-config` or the pkg-config gem ...
gem install pkg-config -v "~> 1.1"
pkg-config could not be used to find libxslt
Please install either `pkg-config` or the pkg-config gem ...
gem install pkg-config -v "~> 1.1"
pkg-config could not be used to find libexslt
Please install either `pkg-config` or the pkg-config gem ...
gem install pkg-config -v "~> 1.1"
ERROR: cannot discover where libxml2 is located on your s...
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably la...
libraries and/or headers. Check the mkmf.log file for mo...
need configuration options.
}}
NOKOGIRI_USE_SYSTEM_LIBRARIESを指定しないか、以下のように...
gem install nokogiri -- --use-system-libraries --with-xm...
NOKOGIRI_USE_SYSTEM_LIBRARIESを指定しなければいいのだが原...
ページ名: