[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

need help with Hpricot

Li Chen

10/8/2008 7:53:00 PM

Hi all,

I try to get"Slang " and "A close companion or comrade." ONLY out of
the following a webpage(part of it) with hpricot. There are so many
javascripts there. I don't think I know path/tag for target.

Thanks,

Li




<td><b>side�·kick</b> &nbsp;
<script type="text/javascript">
............................
.............................................
</script><noscript><a
href="http://dictionary.reference.com/audio.html/ahd4WAV/S0388900/side...
target="_blank"><img src="http://cache.lexico.com/g/d/speaker...
border="0" /></a></noscript> &nbsp; &nbsp;&nbsp;(s�«d'k�­k') &nbsp;<a
href="http://cache.lexico.com/help/ahd4/pronkey.... class="pronkey"
title="Click for guide to symbols." onclick="ahdpop();return
false;">Pronunciation Key</a>&nbsp;
<br />

<!--BOF_HEAD-->
n.&nbsp;&nbsp;<!--EOF_HEAD-->
<!--BOF_SUBHEAD-->
<i>Slang</i>
<br />
<!--EOF_SUBHEAD-->
<!--BOF_DEF-->
A close companion or comrade.
<br />
<!--EOF_DEF-->
<br />
</td>
--
Posted via http://www.ruby-....

2 Answers

Mark Thomas

10/9/2008 6:51:00 PM

0

On Oct 8, 3:53 pm, Li Chen <chen_...@yahoo.com> wrote:
>  I try to get"Slang " and "A close companion or comrade." ONLY out of
> the following a webpage(part of it) with hpricot. There are so many
> javascripts there.  I don't think I know path/tag for target.

There's not a whole lot of HTML structure there. If you can
definitively target the <td> with Hpricot, you can use regular
expressions to find the appropriate comments and grab the following
text.

You can get a little more specific with XPath expressions. The
following sample code (requires libxml-ruby) extracts the two values
from your sample code:

require 'xml'
html = %Q(your_html_here)
doc = XML::HTMLParser.string(html).parse
puts doc.find('//comment()[contains(.,"SUBHEAD")]/following::i/
text()').first
puts doc.find('//comment()[contains(.,"BOF_DEF")]/
following::text()').first



Li Chen

10/9/2008 7:31:00 PM

0

Hi Mark Thomas:

Thank you for the suggestion.

I aslo search the forum and find an earlier post which helps me get the
job done. The ideas of it are 1) use regular expression to remove
non-convention HMLT stuff such as javascripts. 2) then let hpricot
handle the remaining. It works pretty good for me.

Here is the title and author of that post/reply:

Re: HTML parser Hpricot? and how to get all text
Posted by SpringFlowers AutumnMoon (winterheat) on 03.11.2007 09:10

Li
--
Posted via http://www.ruby-....