2009-07-23 11 views
2

Wie kann ich mit Ruby Informationen aus einer Tabelle mit diesen Zeilen extrahieren? Ist es möglich, die Kommentare mit Nokogiri zu erkennen?Verwenden von Ruby und Nokogiri zum Analysieren von HTML mit HTML-Kommentaren als Markierungen

<!-- Begin Topic Entry 4134 --> 
    <tr> 
     <td align="center" class="row2"><image src='style_images/ip.boardpr/f_norm.gif' border='0' alt='New Posts' /></td> 
     <td align="center" width="3%" class="row1">&nbsp;</td> 
     <td class="row2"> 
      <table class='ipbtable' cellspacing="0"> 
       <tr> 

<td valign="middle"><alink href='http://www.xxx.com/index.php?showtopic=4134&amp;view=getnewpost'><image src='style_images/ip.boardpr/newpost.gif' border='0' alt='Goto last unread' title='Goto last unread' hspace=2></a></td> 

        <td width="100%"> 
        <div style='float:right'></div> 
        <div> <alink href="http://www.xxx.com/index.php?showtopic=4134&amp;hl=">EXTRACT LINK 1</a> </div> 
        </td> 
       </tr> 
      </table> 
      <span class="desc">EXTRACT DESCRIPTION</span> 
     </td> 
     <td class="row2" width="15%"><span class="forumdesc"><alink href="http://www.xxx.com/index.php?showforum=19" title="Living">EXTRACT LINK 2</a></span></td> 
     <td align="center" class="row1" width='10%'><alink href='http://www.xxx.com/index.php?showuser=1642'>Mr P</a></td> 
     <td align="center" class="row2"><alink href="javascript:who_posted(4134);">1</a></td> 
     <td align="center" class="row1">46</td> 
     <td class="row1"><span class="desc">Today, 12:04 AM<br /><alink href="http://www.xxx.com/index.php?showtopic=4134&amp;view=getlastpost">Last post by:</a> <b><alink href='http://www.xxx.com/index.php?showuser=1649'>underft</a></b></span></td> 
    </tr> 
<!-- End Topic Entry 4134 --> 
--> 
+0

Können Sie ein konkreteres Beispiel nennen? Spezifische Ein- und Ausgabe? –

+0

@Michael: Es gibt Beispieltext, und es erscheint in der Vorschau, aber nicht in der Frage. Fixiere es jetzt ... –

Antwort

0

Sie könnten ein Nokogiri SAX Parser implementieren. Dies geschieht schneller als es auf den ersten Blick scheinen mag. Sie erhalten Ereignisse für Elemente, Attribute und Kommentare.

Innerhalb Ihres Parsers sollten Sie sich an den Status erinnern, wie zum Beispiel @currently_interested = true, um zu wissen, welche Teile zu erinnern sind und welche nicht.

7

Versuchen XPath zu verwenden, anstatt:

html_doc = Nokogiri::HTML("<html><body><!-- Begin Topic Entry 4134 --></body></html>") 
html_doc.xpath('//comment()') 
+1

Ich glaube, das sollte die akzeptierte Lösung sein, da es die einfachste ist. – thekingoftruth

Verwandte Themen