Najnovšie na Twitteri
    sledujte môj Twitter
    Moje projekty

    Skript na sťahovanie tutoriálov

    Publikované: 25.11.2008 10:29 | Zobrazené: 669x

    Neviem, ako vy, ale ja nerád čítam dlhšie texty z monitora. Papier je predsa len papier, pokojne si ho vezmete na posteľ, do električky, rýchlo upracete do vaku a a aj rýchlo vytiahnete. Preto si všetky tutoriály, návody a články z webu, ktoré sú buď príliš dlhé alebo nemám čas si ich hneď prečítať, dávam vytlačiť. Keďže väčšina vecí sú hlavne www stránky, tak je s tým občas trošku problém. Hlavne, ak chce mať človek vytlačené všetky diely tutoriálu pokope a chce si z nich urobiť knižku.

    Tlačiť každý dokument zvlášť, aj s hlavičkou a pätou dokumentu, nemusí byť to pravé. Nebolo by lepšie všetky diely tutoriálu pospájať do jedného súboru a vytlačiť ich tak? Určite bolo.

    Nejaký čas som to všetko robil prácne ručne. Otvoril som si všetky články tutoriálu, ktorý ma práve zaujímal, poukladal je den po druhom. Všetky otvoril v textovom editore, upravil, nakoniec zlepil do jedného dokumentu a ten dal vytlačiť.

    Dnes mám na to skript. Najskôr si pozbieram url linky článkov tutoriálu a všetky vložím do textového súboru. Jeden riadok, jedna linka. Následne si otvorím jeden skript, tam upravím dva regulárne výrazy, ktoré mi z každého článku odrežú nepotrebné html hlavičky a pätu, uložím. Skript spustím a jeho výsledok presmerujem do nejakého súboru. Nakoniec v tomto súbore pridám vlastné html hlavičky a hotovo. Môže sa tlačiť. Z hodinovej roboty sú zrazu dve-tri minúty.

    Takže ešte raz:

    1. Všetky linky uložíme do jedného súboru linky.txt
    2. Upravíme regulárne výrazy v skripte
    3. Spustíme:
      perl stiahni-clanky.pl linky.txt > clanky.html
    4. Otvoríme clanky.html a pridáme vlastné html hlavičky
    5. Dáme tlačiť

    A tu je zdrojový kód skriptu v jazyku Perl. Tento má regulárne výrazy upravené pre server interval.cz.

    #!/usr/bin/perl
     
    # vim:set shiftwidth=4 tabstop=4 expandtab foldmethod=marker: #
     
    use strict;
    use warnings;
     
    use LWP::UserAgent;
     
    die "Nebol zadany subor so zoznamom liniek" unless $ARGV[0];
     
    my @urls = ();
    open FH, "<", $ARGV[0];
    while (my $line = <FH>) {
        $line =~ s/^s+|s+$//; # medzery na zaciatku a konci riadku ignorujeme
        push @urls, $line;
    }
    close FH;
     
    my $ua = new LWP::UserAgent;
    $ua->agent ("Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008071420 Iceweasel/3.0.1 (Debian-3.0.1-1)");
     
    foreach my $url (@urls) {
        my $response = $ua->get ($url);
     
        my $content = $response->as_string;
        # regularny vyraz pre odrezanie hlavicky dokumentu
        $content =~ s/^.+?<h2>/<h2>/s;
        # regularny vyraz pre odrezanie paty dokumentu
        $content =~ s/(<div id='article-author'>.*?</div>).*$/<br /><br />/s;
        print $content, "
    ";
     
    }

    Pošli na: Facebook   vybrali.sme.sk
    Komentáre:

    Zatiaľ nie sú žiadne komentáre.

    Pridať komentár