48. kasu praktikoa: bilaketak sarean

      Komando-lerroaren bitartez bi bilaketa-patroi eman, eta patroi bakoitzaren agerpen kopurua kalkulatzen du segidan datorren programak. Aurretik ere egin ditugu antzekoak, baina programa honen berritasuna fitxategi bat miatu beharrean teklatu bidez helbidea idatzi eta web eta bertatik atzitu daitezkeenak miatzean datza.

     Hona hemen, programaren erabilera posible bat:
 >perl agerpenWeb.pl a e
 Ze helbidetan begiratu behar dut?
 www.erabili.com
 a agerpen kopurua: 13807
 e agerpen kopurua: 11015
 >

     Programa honek erabilera ugari ditu, besteak beste hiztegi edo kontsultarako
corpus gisa erabil genezake sarea. Adibidez, nola idatzi behar da : “handi” edo
“haundi”?
 >perl agerpenWeb.pl haundi handi
 Ze helbidetan begiratu behar dut?
 www.berria.info
 haundi agerpen kopurua: 0
 handi agerpen kopurua: 28
 >

agerpenWeb.pl  Perl programa

 #!/usr/bin/perl
 use warnings;
 use strict;
 use LWP::Simple;
 print(“Ze helbidetan begiratu behar dut?n”);
 my $html = <STDIN>;
 chomp($html);
 $html = “http://” . $html;
 # Jaso bilaketa-patroiak
 my $sarBat = $ARGV[0];
 my $sarBi = $ARGV[1];
 my $agerpenBat = 0;
 my $agerpenBi = 0;
 my ($weba, @linkak);
 # Bisitautako web orrien helbideak
 my @bisitatuak;
 # Bisitatu gabeko web orrien helbideak
 my @bisiGabeak;
 # Esteka kopuru maximoa
 my $linkMax = 10;
 # Bisitatutako link edo web orri kopurua
 my $linkop = 0;
 # Gehitu hasierako helbidea bisitatu gabekoen taldeari
 push(@bisiGabeak, $html);

# Bisitatu gabeko helbiderik gertatzen den artean eta
# esteka kopuru maximora iritsi bitartean
while ($#bisiGabeak > -1 and $linkop < $linkMax) {
     $html = shift(@bisiGabeak);
     # array-ko lehen helbidea hartu.
     # bisitatua dagoeneko?
     if (bisitatua($html) == 0) {
           $linkop++;
           # lortu web orriaren edukia
           $weba = get($html);
           # web orriko estekak atera eta gorde
           @linkak = linkak_atera($weba);
           # Gehitu estekak bisitatu gabekoen zerrendara
           push(@bisiGabeak, @linkak);
           $linkop++;
           while ($weba =~ /($sarBat|$sarBi)/gi) {
                       # Adierazpen erregularraren aukerak:
                       # g globala (agerpen guztiak)
                       # i letra larri/xeheak ez bereizi
                # bat egitea $sarrera1 edo $sarrera2-k
                # eragin du?
                if ($1 eq $sarBat) {
                     $agerpenBat++;
                }
                if ($1 eq $sarBi) {
                     $agerpenBi++;
                }
           }
           # Uneko orria bisitatuen zerrendara pasa
           push(@bisitatuak, $html);
     }
}
print(“$sarBat agerpen kopurua: $agerpenBatn”);
print(“$sarBi agerpen kopurua: $agerpenBi”);

# Azpiprograma
# Helbidea dagoeneko bisitatu badugu 1 itzuliko du, 0
# bestela
sub bisitatua {
     my $helb = shift();
     foreach my $i (@bisitatuak) {
           # kontuz, aldagai orokorra erabiltzen ari gara
           if ($i eq $helb) {
                return 1;
                }
     }
     return 0;
}
# Argumentu bezala pasatako web orriaren estekak atera
# eta array batean itzuli
sub linkak_atera {
  my $orri = shift();
  my @lerroak = split(/n/, $orri);
  my @URL;
  foreach my $lerro (@lerroak) {
    if ($lerro =~ /<a href=”(http:[^”]+)”(.*)>(.*)</a>/) {
               if ($1 !~ /(jpg|gif|png|bmp|tiff|pdf|doc)/) {
                   # Ez dadila ez irudia ezta dokumentua izan
                   push(@URL, $1);
               }
    }
  }
     return @URL;
}

Iruzkinak (3)

  • Anonimoa says:

    Esate baterako, berrietan agertzen diren izen edo oro har hitzen kopurua jakinik, ezer irakurri aurretik gaurkotasunik handiko hitzak diren erabakitzeko aukera izatea eskergarria da ezin azterketari hasiera eman baino lehen.
                    Moldatu dugun programa honekin, geuk aukeratutako ezein web orritan eta nahi adina esteka jarraituz, beti ere, emandako webetako estekei jarraiki eta haietatik atera gabe, aurrez emandako bi hitzen agerpen kopurua eta testuingurua lor genezake.

                    Honek web orriak geronek aukeratzeko modua damaigu eta agian, zenbateko osoan baztertu beharreko hitzei antzematea, testuinguruari begira.

     

    Adibidea:

     

    C:UsersRibaryMikelenperl>perl agerpenWebmurritz4webetanmoldatuz.pl Celaa Real

    Idatzi zein iturritatik jaso nahi dituzun emaitzak: http://www.berria.info http://www.diariova

    sco.com http://www.sustatu.com

    Zenbat esteka jarraitu nahi duzu? 50

    Hau aztertzen: http://www.berria.info

    Hau aztertzen: http://www.diariovasco.com

    udad Real

     5 – REAL SOCI

    “>La Real cae

    Foro Real Soci

     5 – Real Soci

    “>La Real cae

    n la real se v

    e la real para

    a al Real Madr

    Hau aztertzen: http://www.sustatu.com

     

    (…)

     

    Hau aztertzen: http://www.berria.info/ekonomia/

    Hau aztertzen: http://www.berria.info/mundua/

    Celaa agerpen kopurua: 0

    Real agerpen kopurua: 11

     

    Programa:

     
    #!/usr/bin/perluse warnings;use strict;use LWP::Simple;print “Idatzi zein iturritatik jaso nahi dituzun emaitzak: “;my $iturri = <STDIN>;chomp $iturri;my @html_laburra = split (/[ ]+/, $iturri); my @html_luzea = ();foreach my $htm (@html_laburra) {    my $lag = “http://” . $htm;    push (@html_luzea, $lag);}# Jaso bilaketa patroiakmy $sarBat = $ARGV[0];my $sarBi = $ARGV[1];my $agerpenBat = 0;my $agerpenBi = 0;my ($weba, @linkak);#bisitautako web orrien helbideakmy @bisitatuak;#bisitatu gabeko web orrien helbideakmy @bisiGabeak;#esteka kopuru maximoaprint “Zenbat esteka jarraitu nahi duzu? “;my $linkMax = <STDIN>;chomp $linkMax;#bisitatutako link edo web orri kopuruamy $linkop = 0;#Gehitu hasierako helbidea bisitatu gabekoen taldeari@bisiGabeak = @html_luzea;# Bisitatu gabeko helbiderik gertatzen den artean eta# esteka kopuru maximora iritsi bitarteanwhile ($#bisiGabeak > -1 and $linkop < $linkMax) {    my $html = shift(@bisiGabeak); #array-ko lehen helbidea hartu.    # bisitatua dagoeneko?    if (bisitatua($html) == 0) {            print (“Hau aztertzen: $htmln”);            $linkop++;        # lortu web orriaren edukia        $weba = get($html);        # web orriko estekak atera eta gorde        @linkak = linkak_atera($weba);        # Gehitu estekak bisitatu gabekoen zerrendara        push(@bisiGabeak, @linkak);                while ($weba =~ /(.{4}[ .,?]($sarBat|$sarBi).{5})/gi) {                     # Adierazpen erregularraren aukerak:                    # g globala (agerpen guztiak)                    # i letra larri/xeheak ez bereizi                                                        # Bategitea $sarrera1 edo $sarrera2-k eragin du?            my $balioa = $1;            if ($balioa  =~ /$sarBat/gi) {                $agerpenBat++;                print (“$balioan”);            }            if ($balioa  =~ /$sarBi/gi) {                $agerpenBi++;                print (“$balioan”);            }        }        # Uneko orria bisitatuen zerrendara pasa                push(@bisitatuak, $html);    }}print(“$sarBat agerpen kopurua: $agerpenBatn”);print(“$sarBi agerpen kopurua: $agerpenBin”);# Azpiprograma# Helbidea dagoeneko bisitatu badugu 1 itzuliko du, 0 bestelasub bisitatua {    my $helb = shift();    foreach my $i (@bisitatuak) {     #kontuz, aldagai orokorra erabiltzen ari gara        if ($i eq $helb) {            return 1;            }    }    return 0;}# Argumentu bezala pasatutako web orriaren estekak atera # eta array batean itzulisub linkak_atera {my $orri = shift();my @lerroak = split(/n/, $orri);my @URL;   foreach my $lerro (@lerroak) {      if ($lerro =~ /<a href=”(http:[^”]+)”/) {      my $helb1 = $1;      if (($helb1 !~ /(jpg|gif|png|bmp|tiff|pdf|doc)/)                #Ez dadila ez irudia ezta dokumentua ere izan        && badauka ($helb1, @html_laburra)){     # Azpiprograma hau sartu dugu nahi dugun helbidea                  push(@URL, $helb1);            # hartu eta arraian sartzeko.             }               }   }   return @URL;}sub badauka {    my $h = shift();    my @taula = @_ ;    my $emaitza = 0;    foreach my $helbide_bat (@taula) {            if ($h =~ /$helbide_bat/) { $emaitza = 1;            }            }    return $emaitza; }

  • Koldo Gojenola says:

    PrentsometroaMoldaketa bat egin dugu programa honen gainean. Ideia da erabiltzaileak bi hitz sartzea, topatu nahi dituen elementuak. Sistemak web-helbideen zerrenda bat aztertuko du, eta bakoitzeko emango du zenbatetan aurkitu duen hitz bakoitza. Adibidez:perl prentsometroa “Athletic” “Real Sociedad”Egunkaria                Athletic      Real Sociedadhttp://www.berria.info              3                0http://www.sustatu.com              0                0http://www.argia.com                0                0http://www.eitb.com/albisteak       0                0http://www.diariovasco.com          3                158http://www.elcorreo.com             330                5http://www.elpais.com               0                0http://www.elmundo.es               11                0http://www.abc.es                   0                0http://www.diariodenavarra.es       0                0Programak erakusten duenez, hitz bakoitzaren agerpen-kopurua oso desberdina da egunkarien artean (baita egun batetik bestera, noski).Programa honek egunero bi terminoen arteko konparaketak egitea ahalbidetzen du, horrela bakoitzaren “gaurkotasuna” neurtuz, komunikabide bakoitzean. Hona hemen bere kodea:#!/usr/bin/perluse warnings;use strict;use LWP::Simple;my $html;# Jaso bilaketa patroiakmy $sarBat = $ARGV[0];my $sarBi = $ARGV[1];my @prentsa = (“http://www.berria.info”, “http://www.sustatu.com”,”http://www.argia.com”,”http://www.eitb.com/albisteak”,”http://www.diariovasco.com”,”http://www.elcorreo.com”,”http://www.elpais.com”,”http://www.elmundo.es”,”http://www.abc.es”, “http://www.diariodenavarra.es”);print(“Egunkaria t t t $sarBat t $sarBin”);# listatuaren goiburukoa idatzi#bisitautako web orrien helbideakmy @bisitatuak;#bisitatu gabeko web orrien helbideakmy @bisiGabeak;#esteka kopuru maximoamy $linkMax = 30;foreach my $egunkaria  (@prentsa) {my $agerpenBat = 0;my $agerpenBi = 0;my ($weba, @linkak);@bisiGabeak = ();@bisitatuak = ();#bisitatutako link edo web orri kopuruamy $linkop = 0;#Gehitu hasierako helbidea bisitatu gabekoen taldeari$html = $egunkaria;push(@bisiGabeak, $html);# Bisitatu gabeko helbiderik gertatzen den artean eta# esteka kopuru maximora iritsi biatrteanwhile ($#bisiGabeak > -1 and $linkop < $linkMax) {    $html = shift(@bisiGabeak); #array-ko lehen helbidea hartu.    # bisitatua dagoeneko?    if (bisitatua($html) == 0) {            #print (“Hau aztertzen: $htmln”);            $linkop++;        # lortu web orriaren edukia        $weba = get($html);        if (defined $weba) {            # web orriko estekak atera eta gorde            @linkak = linkak_atera($egunkaria, $weba);            # Gehitu estekak bisitatu gabekoen zerrendara            push(@bisiGabeak, @linkak);                       while ($weba =~ /($sarBat|$sarBi)/gi) {            # Adierazpen erregularraren aukerak:            # g globala (agerpen guztiak)            # i letra larri/xeheak ez bereizi                                                       # Bategitea $sarrera1 edo $sarrera2-k eragin du?            my $balioa = $1;            if ($balioa  =~ /$sarBat/i) {                $agerpenBat++;                #print (“$balioan”);            }            if ($balioa  =~ /$sarBi/i) {                $agerpenBi++;                #print (“$balioan”);            }            } #while        } #if        # Uneko orria bisitatuen zerrendara pasa               push(@bisitatuak, $html);    }}$egunkaria.= ” “x(30-length($egunkaria));print(“$egunkaria t $agerpenBat t t t $agerpenBin”);}# Azpiprograma# Helbidea dagoeneko bisitatu badugu 1 itzuliko du, 0 bestelasub bisitatua {    my $helb = shift();    foreach my $i (@bisitatuak) {     #kontuz, aldagai orokorra erabiltzen ari gara        if ($i eq $helb) {            return 1;            }    }    return 0;}# Argumentu bezala pasatko web orriaren estekak atera# eta array batean itzulisub linkak_atera {my $egunk = shift();my $orri = shift();my @lerroak = split(/n/, $orri);my @URL;   foreach my $lerro (@lerroak) {      if ($lerro =~ /<a href=”(http:[^”]+)”/) {         my $helb1 = $1;     if (($helb1 !~ /(jpg|gif|png|bmp|tiff|pdf|doc)/)               #Ez dadila ez irudia ezta dokumentua ere izan        && ($helb1 =~ /$egunk/)) { # eta egunkariaren gunetik atera gabe                  push(@URL, $helb1);             }              }   }   return @URL;}

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude