鋸山

2011-10-22 6 views
0

と段落要素の内容を解析私は鋸山との内容のブロックを解析するための適切な方法を知りたいのですが<p>。それぞれの中の主要な情報は、奇妙なことに、<font>タグで分けられます。鋸山

効果的<p>内容の株価サンプルは(いくつかは、いくつかのはるかに少ない、より多くのコンテンツを持っている)、以下が含まれており、典型的な例である:

<p> 
    <font size="5" face="Arial, Helvetica, sans-serif" color="#00CCAA" class=""> 
    <font color="#AAFF33" class=""> 
     October 10, 1990 - Maybe a Title 
    </font>- 
    <font size="4" class=""> 
     Some long text here.   
     <font color="#66CC00" class=""> 
     <a href="SourceTitle/date.pdf">[Blah Blah, October 27, 1982 p. 2</a> 
     ] 
     </font>. 
     More content. 
     <font color="#00FF33" class="">[Another Source, 1971, issue 01/4] 
     </font>. 
    </font> 
    <font size="5" face="Arial, Helvetica, sans-serif" color="#00CCAA" class=""> 
     <font color="#AAFF33" class=""><font size="4" color="#00CCAA" class=""> 
     Another fantastic article. 
     <a href="SourceTitle/Date.pdf">[Some Source, October 4, p.6]</a> 
     </font> 
    </font> 
    </font> 
</font> 
</p> 

基本的には、「フォントサイズ」属性が設定するものです各構成要素は物品内で離れている。抽出する主なポイントは、FIRST <font size ="5"...(タイトルが付いている場合は記事の日付とメインタイトル)タグ、次に実際のコンテンツです。私はちょうど正規表現を介してすべてを実行する必要がある場合、私はそれの内容を解析するために、再度鋸山を通してそれを渡すか、または必要があるかどうかわからないのですがdoc.xpath('//p').each do |node|

は現在、私はすべての段落のチャンクがで出てくる必要があります。これを「適切に」行う小さな例が期待されていましたが、要素を引き出す最初のブロック内の埋め込みxpath検出を使用すると仮定しています。私はフォントサイズの境界に基づいてサブコンポーネントを引き出す方法があると仮定しますが、私はまだこれの具体例を見ていません。

+0

はあなたが取得したいターゲット文書の例を与えることができる:-)あなたは行われていますか? – WarHog

+0

残念ながら、コンテンツに含まれる個人情報であるため、実際のデータの例は提供できません。私はあなたのレビューのための情報のいくつかの "行"を本文全体の文脈で抽出しました:http://j.mp/qbpJnh – ylluminate

+0

ある種の誤解があります。私はあなたが結果として得たい文書の例を意味します。 – WarHog

答えて

2

これは役立ちますか?

>> doc.xpath('//p').each do |node| 
..  puts node.xpath("font[@size='5']/font").first.content.strip 
.. end #=> 0 
October 10, 1990 - Maybe a Title 

はあなたが必要とする他の部分についても同様の表現を構築し、

+0

完璧、私の脳を曇らせてくれてありがとう。 :P – ylluminate

+0

本当に素早く、放出されるオブジェクトは 'Nokogiri :: XML :: Element'ですが、この場合は' content'のための未定義のメソッドが得られます。うーん、まだ素早い答えが見えていない。 – ylluminate

+0

申し訳ありませんが、ここからは分かりません。 IRBの周りを遊んで、要素を調べ、(instance_methodsのような)他のイントロスペクションメソッドなどを使用します。それはおそらくちょっとしたことです... –

関連する問題