現在、nokogiriにて下記のような構造のテキストをスクレイピングをするコードを書いております。
HTML
1<div class="class1"> 2 <h1>headline1headline1headline1headline1</h1> 3 <p>text1text1text1text1text1text1</p> 4 <p>text2text2text2text2text2text2</p> 5 <p>text3text3text3text3text3text3</p> 6 <p>text4text4text4text4text4text4</p> 7 <h1>headline2headline2headline2headline2</h1> 8 <p>text5text5text5text5text5text5</p> 9 <p>text6text6text6text6text6text6</p> 10 <p>text7text7text7text7text7text7</p> 11 <p>text8text8text8text8text8text8</p> 12 <p>text9text9text9text9text9text9</p> 13</div> 14
取得したい結果は下記のように構造通りに取得したいのですが、まずh1がまとまって取得され、その後pタグが取得されるような形になってしまいます。
■■■■得たい結果■■■■
headline1headline1headline1headline1
text1text1text1text1text1text1
text2text2text2text2text2text2
text3text3text3text3text3text3
text4text4text4text4text4text4
headline2headline2headline2headline2
text5text5text5text5text5text5
text6text6text6text6text6text6
text7text7text7text7text7text7
text8text8text8text8text8text8
text9text9text9text9text9text9
■■■■得られた結果■■■■
headline1headline1headline1headline1
headline2headline2headline2headline2
text1text1text1text1text1text1
text2text2text2text2text2text2
text3text3text3text3text3text3
text4text4text4text4text4text4
text5text5text5text5text5text5
text6text6text6text6text6text6
text7text7text7text7text7text7
text8text8text8text8text8text8
text9text9text9text9text9text9
順番にh1を取得しようと下記のように書き換えました。
※each文を利用する意味はないと思いますが、このようにすると動いたので、その部分も書き換えたいです。
ruby
1require 'open-uri' 2require 'nokogiri' 3 4url = File.open("sample.html") 5doc = Nokogiri::HTML(url) 6 7doc.css(".class1").each do |article| 8 for i in 1..10 9 h1 = article.xpath("h1["+i.to_s+"]") 10 11 unless h1.empty? 12 puts h1.text 13 p = article.xpath("p") ←ここの書き方がわからない。 14 puts p.text 15 else 16 next 17 end 18 end 19end 20
上記のようにすることで下記のような結果を得られました。
headline1headline1headline1headline1
text1text1text1text1text1text1
text2text2text2text2text2text2
text3text3text3text3text3text3
text4text4text4text4text4text4
text5text5text5text5text5text5
text6text6text6text6text6text6
text7text7text7text7text7text7
text8text8text8text8text8text8
text9text9text9text9text9text9
headline2headline2headline2headline2
text1text1text1text1text1text1
text2text2text2text2text2text2
text3text3text3text3text3text3
text4text4text4text4text4text4
text5text5text5text5text5text5
text6text6text6text6text6text6
text7text7text7text7text7text7
text8text8text8text8text8text8
text9text9text9text9text9text9
これを下記の結果が得られるようにするため、アドバイスをいただけますと幸いです。
■■■■得たい結果■■■■
headline1headline1headline1headline1
text1text1text1text1text1text1
text2text2text2text2text2text2
text3text3text3text3text3text3
text4text4text4text4text4text4
headline2headline2headline2headline2
text5text5text5text5text5text5
text6text6text6text6text6text6
text7text7text7text7text7text7
text8text8text8text8text8text8
text9text9text9text9text9text9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/11 11:46