Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to extract texts from html source?

2 views
Skip to first unread message

Sam Kong

unread,
May 9, 2005, 3:02:53 PM5/9/05
to
Hi, all!

Quite often, when I need to read a list of web pages, I download the
html sources and save them in a single file like a.html.
If they are mostly texts, I open the html using web browser, select all
and copy it to an editor and save it.
I want to make the process shorter.
How can I extract the text from html source?
I'm sure there're many parsers for it.
What is the most convenient one?

Thanks.
Sam

James Britt

unread,
May 9, 2005, 3:22:20 PM5/9/05
to

Brian Schröder

unread,
May 9, 2005, 3:37:02 PM5/9/05
to

You don't need ruby for this:

$ apt-cache show w3m
Package: w3m
[snip]
Description: WWW browsable pager with excellent tables/frames support
w3m is a text-based World Wide Web browser with IPv6 support.
It features excellent support for tables and frames. It can be used
as a standalone file pager, too.
.
* You can follow links and/or view images in HTML.
* Internet message preview mode, you can browse HTML mail.
* You can follow links in plain text if it includes URL forms.
* With w3m-img, you can view image inline.
.
For more information,
see http://sourceforge.net/projects/w3m

$ w3m -dump http://ruby.brian-schroeder.de/quiz/mazes/ | head
A ruby a day!

Ruby Quiz Solutions (Amazing Mazes)

Amazing Mazes

For a full description see: (Amazing Mazes on Ruby Quiz Homepage)[http://
www.rubyquiz.com/quiz31.html]

Another graph algorithm. Create a maze that is fully connected and has only one
$

regards,

Brian

--
http://ruby.brian-schroeder.de/

multilingual _non rails_ ruby based vocabulary trainer:
http://www.vocabulaire.org/ | http://www.gloser.org/ | http://www.vokabeln.net/

Sam Kong

unread,
May 9, 2005, 3:49:50 PM5/9/05
to

James Britt wrote:
> Sam Kong wrote:
> > Hi, all!
> >
> > Quite often, when I need to read a list of web pages, I download
the
> > html sources and save them in a single file like a.html.
> > If they are mostly texts, I open the html using web browser, select
all
> > and copy it to an editor and save it.
> > I want to make the process shorter.
> > How can I extract the text from html source?
> > I'm sure there're many parsers for it.
> > What is the most convenient one?
>
>
> Take a a look at Michael Neumann's WWW::Mechanize
>
> http://www.ntecs.de/blog/Blog/WWW-Mechanize.rdoc
> http://rubyforge.org/frs/?group_id=427&release_id=2014
>
> Or install the gem

Thank James.
That looks cool.
However, it doesn't seem to have a function to extract texts from html.
(Or did I miss it?)
What I want is...

<table><tr><td>TEST</td></tr></table> => TEST

Is there a module that does this?

Regards,
Sam

Sam Kong

unread,
May 9, 2005, 4:00:46 PM5/9/05
to

Oh, thanks.
I just realized that even lynx can do that.

Regards,
Sam

Tom Reilly

unread,
May 9, 2005, 10:07:56 PM5/9/05
to
Several years ago, one of the members of the group offered me this
routine which does a pretty good job of
extracting the text from a html page.

#--------------------------------------------------------------------
# Strip HTML Tags from Line
#--------------------------------------------------------------------

def striphtml(line)
line.gsub(/\n/, ' ').gsub(/<.*?>/, '')
end


James Britt

unread,
May 9, 2005, 10:49:57 PM5/9/05
to
Sam Kong wrote:
> Thank James.
> That looks cool.
> However, it doesn't seem to have a function to extract texts from html.
> (Or did I miss it?)

No, it is a library for the (fairly) easy creation of HTML munging code.

Some coding is required, but it allows complete control (so you get just
the text of interest).


James


daz

unread,
May 10, 2005, 7:52:31 AM5/10/05
to

Sam Kong wrote:
>
> [...] If they are mostly texts, I open the html using

> web browser, select all and copy it to an editor and save it.
>

Save As ... [text file].txt

- Removes all tags.
(Verified with Opera, Firefox & IE6, so I guess most browsers do this)
( e.g. test page: http://www.qurl.net/ )


daz


Sam Kong

unread,
May 10, 2005, 11:55:46 AM5/10/05
to
Yes, that's right...:)
I just want to do it all with my ruby program...hehe
Thanks anyway.

Sam

Sam Kong

unread,
May 10, 2005, 11:59:27 AM5/10/05
to

Thank you for sharing the code.
However, this code works only for a simple line, right?
When I tested it with a page of html by looping line by line, the
result was not what I expected.
Probably, I need to get a DOM parser...:-(

Sam

Ben Giddings

unread,
May 10, 2005, 1:14:55 PM5/10/05
to

You may find my HTMLTokenizer library convenient for this. To do what you
need, all you'd do is keep calling "tokenizer.getText()"

http://rubyforge.org/projects/htmltokenizer/

Ben


James Britt

unread,
May 10, 2005, 1:20:02 PM5/10/05
to


WWW::Mechanize sits atop such a process, but makes it easier to define
what to do for elected elements and such.

Just sayin' ...


James


Julius Plenz

unread,
May 30, 2005, 4:41:33 PM5/30/05
to
* Tom Reilly <w3...@nwlagardener.org> [2005-05-10]:

>#--------------------------------------------------------------------
># Strip HTML Tags from Line
>#--------------------------------------------------------------------
>
> def striphtml(line)

I'd rather recommend to use
line.gsub(/\n/, ' ').gsub(/<[^>]+>/, '')
instead of

> line.gsub(/\n/, ' ').gsub(/<.*?>/, '')
> end

Julius

William Park

unread,
Jun 2, 2005, 7:35:08 PM6/2/05
to
Sam Kong <sam.s...@gmail.com> wrote:
> What I want is...
>
> <table><tr><td>TEST</td></tr></table> => TEST
>
> Is there a module that does this?

I guess you run it through XML parser, like Expat which is everywhere
these days. Even Bash and Gawk have interface to it.

--
William Park <openge...@yahoo.ca>, Toronto, Canada
ThinFlash: Linux thin-client on USB key (flash) drive
http://home.eol.ca/~parkw/thinflash.html

0 new messages