in reply to Re: HTML-Parser: a newbie question: need to extract exactly line 999 out of 5000 files..
in thread HTML-Parser: a newbie question: need to extract exactly line 999 out of 5000 files..

i'd use HTML::TokeParser::Simple and DBI and put your line directly into your db. also, if your files are in separate directories look at find2perl (or File::Find). i too would advise against just relying on the line number. however, if you want to do that, it can be done just as easy from straight command line: find -type f -print0 | xargs -0 -i{} head -1000 {} | tail -1 | while read string; do mysql -e 'insert query $string'; done that said, the perl would be faster and TokeParser would allow for more reliable data. the pers modules i stated above are pretty straight forward to use, but since i've just done (from LWP and not from files) i can pretty much get you a template for this in a few minutes if you need.
  • Comment on Re^2: HTML-Parser: a newbie question: need to extract exactly line 999 out of 5000 files..

Replies are listed 'Best First'.
Re^3: HTML-Parser: a newbie question: need to extract exactly line 999 out of 5000 files..
by Perlbeginner1 (Scribe) on Oct 16, 2010 at 09:00 UTC
    hello ag4ve, many thanks for the posting!


    i like your idea of using HTML::TokeParser::Simple and DBI. I have little experience with HTML::TokeParser::Simple but To to this task on my own -it would go over my head - at least at the moment! Note: i also have had a look at the ideas of morgon - that seems to be also an appropiate way. But at the moment i have issues to get the correspodending xpath-expressions: I tried to determine the corresponding xpath-expressions that needs to be filled in the Perl-programme

    @ag4gee: I think i would love to go your way: and do it with HTML::TokeParser::Simple and DBI.

    I guess that i have to do it with the other items too: in order to get the full information set that is wanted:
    See one of the example sites:

    http://www.kultusportal-bw.de/servlet/PB/menu/1188427/index.html?COMPLETEHREF=http://www.kultus-bw.de/did_abfrage/detail.php?id=04313488

    in the grey shadowed block you see the wanted information: 17 lines that are wanted. Note - i have 5000 different HTML-files - that all are structured in the very same way!

    That means i would be happy to have a template that can be runned with HTML::TokeParser::Simple and DBI. That would be great!!

    I look forward to hear from you

    best regards perlbeginner1

    Note: see the 5000 sites - with all the infos - on a german official governmental server...:
    http://www.kultusportal-bw.de/servlet/PB/menu/1188427/index.html?COMPLETEHREF=http://www.kultus-bw.de/did_abfrage/schnellsuche.php

    do a search with *.* -> then you get the result pages - All is available for the whole world - and as i work in the filed of education, nothing is wrong with doing the parsing-job!


    Note your code just looks great!! Really:


    use strict; use HTML::TreeBuilder::XPath; my $tree = HTML::TreeBuilder::XPath->new; #use real file name here open(my $fh, "<", "file.html") or die $!; $tree->parse_file($fh); my ($name) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]}); print $name->as_text;