質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

Q&A

解決済

1回答

2166閲覧

Xpathについて教えて下さい

hfhff

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

0グッド

0クリップ

投稿2015/06/08 14:52

以下のようなHTMLがあったとします

lang

1<html> 2 <body> 3 <div id="container"> 4 <div class="hoge"> 5 <div id="fuga" class="piyo"> 6 <div id="sheet" class="piyo2"> 7 <div class="paginate"> 8 <div class="fkd"></div> 9 <div class="entrybody"> 10 <a href="sample.com"> 11 <a href="sample2.com"> 12 <div class="entrybody"> 13 <a href="sample.com"> 14 <a href="sample2.com"> 15 <a href="sample.com"> 16 <a href="sample2.com"> 17 <div class="entrybody"> 181920

このとき、<div class="entrybody">のXpathをすべて指定するのは以下のプログラムでできると思います

lang

1require 'nokogiri' 2require 'open-uri' 3 4doc = Nokogiri::HTML(open("http://hoge.com/")) 5body = doc.xpath('/html/body/div/div/div/div[@class="entrybody"]/a')

この場合に<div class="entrybody">のn番目というのは指定できますか?
たとえば、1つ目の<div class="entrybody">の要素の数を指定した場合に、puts body.sizeをすると2になり、2つ目の<div class="entrybody">を指定した場合には4が表示されるようにしたいです

私は以下のプログラムをで実現できるかと思ったのですができませんでした
nはn番目を意味しています

lang

1require 'nokogiri' 2require 'open-uri' 3 4doc = Nokogiri::HTML(open("http://hoge.com/")) 5body = doc.xpath('/html/body/div/div/div/div[@class="entrybody"][n]/a')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

[position()=n]ですね。番号は1始まりです。

lang

1require 'nokogiri' 2require 'open-uri' 3 4doc = Nokogiri::HTML(DATA) 5body = doc.xpath('/html/body/div/div/div/div[@class="entrybody"][position()=1]/a') 6 7p body 8 9__END__ 10<html> 11 <body> 12 <div id="container"> 13 <div class="hoge"> 14 <div id="fuga" class="piyo"> 15 <div id="sheet" class="piyo2"></div> 16 <div class="paginate"></div> 17 <div class="fkd"></div> 18 <div class="entrybody"> 19 <a href="sample.com"> 20 <a href="sample2.com"> 21 </div> 22 <div class="entrybody"> 23 <a href="sample.com"> 24 <a href="sample2.com"> 25 <a href="sample.com"> 26 <a href="sample2.com"> 27 </div> 28 <div class="entrybody"> 29 </div> 30 </body> 31</html>

投稿2015/06/08 15:16

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hfhff

2015/06/08 16:56

おかげさまでできました ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問