Αναζήτηση στο www.whitepages.gr (ήταν: Re: Ελληνικά στο Wine)

Christos Ricudis ricudis at komodino.itc.auth.gr
Tue May 29 10:03:47 EEST 2007


Αλέξανδρος Διαμαντίδης wrote:
>> On Tue, 2007-05-22 at 08:32 +0300, Αλέξανδρος Διαμαντίδης wrote:
>>> Α, και κάτι που σκέφτηκα: αυτό που κάνει το WhitePagesDirect είναι πολύ
>>> χρήσιμο, και πρέπει να γίνεται πολύ εύκολα με κάποιο σκριπτάκι. Θα το
>>> κοιτάξω...
> 
> Λοιπόν, ορίστε ένα σκριπτάκι για να βρίσκετε πληροφορίες για κάποιο
> τηλέφωνο από τη γραμμή εντολών:
> 
> #!/bin/sh
> wget -O- -q --post-data=x_tel=$1 http://www.whitepages.gr/resultsX.asp |\
>         iconv -f iso-8859-7 | perl -nwe 's/ / /g;
>                 /<td class="text-black".*<b>(.*)<\/b>/
>                         and print "Name: $1\n" and $found=1;
>                 if ((/<div align="left">/ and $found==1) .. /<\/div>/) {
>                         s/<[^>]+>//g;
>                         s/^\s+//;
>                         s/\s+$//;
>                         /[^\s]/ and print "Address: $_\n"; }
>                 /<div align="center"><b>(.*)<br><\/b>/
>                         and print "Number: $1\n\n" and $found=0;'
> 
> Το καλείτε με όρισμα έναν δεκαψήφιο αριθμό τηλεφώνου και με λίγη τύχη
> επιστρέφει ονοματεπώνυμο και διεύθυνση.
> 
> Βέβαια ο σωστός τρόπος εξαγωγής πληροφοριών από ιστοσελίδες είναι με
> κάποιον HTML parser, αλλά δεν ξέρω από αυτά... Το παραπάνω σκριπτάκι
> είναι «quick and dirty» όπως λένε, και φυσικά μόλις ο ΟΤΕ αλλάξει λίγο
> την HTML του www.whitepages.gr θα σταματήσει να δουλεύει.
> 

H canonical ekdosh aytou tou pragmatos, brisketai, fysika, sto source code 
ths baltoxionokotas(tm). Opws kai ka8e kalo baltoxionokotofeature, den 
douleyei apo tote poy o OTE apofasise na kanei ena minor change sthn HTML tou.

sub getpersonbyphone {
         my ($phone)=@_;

         if (length($phone)!=10) {
                 return("malakia, ola ta thlefwna einai 10pshfia");
         }

         my $areacode;
         my $phoneno;
         if ($phone=~m/([1-9]*)(0[0-9]*)/) {
                 $areacode=$1;
                 $phoneno=$2;
         } else {
                 return("paparia, den exei areacode");
         }
         my $ua = LWP::UserAgent->new;
         $ua->agent("KotZilla/0.1");
         my $kanata=HTTP::Cookies->new({});
         $ua->cookie_jar($kanata);

         my $req = HTTP::Request->new(GET => 'http://whitepages.oteshop.gr/en');
         my $res = $ua->request($req);

         if ($res->is_success) {
                 $kanata->extract_cookies( $res );
                 my $baseurl=$res->base;
                 my $form = HTML::Form->parse($res->content,$res->base);
                 $form->value('region','');
                 $form->value('areaCode',"$areacode");
                 $form->value('phone',"$phoneno");
                 my $req2 = $form->click();
                 $kanata->add_cookie_header($req2);
                 # POIOS ARXIKARAMALAKAS TO SKEFTHKE TO KOLPO ME TOUS 
REFERER: HEADERS?
                 $req2->header('Referer' => "$baseurl");
                 my $res2 = $ua->request($req2);
                 if ($res2->is_redirect) {
                         # Ws edw kala pame...
                         my $redir=$res2->header('Location');
                         if (!($redir=~m/result/)) {
                                 return("OUA!");
                         } else {
                                 my $req3=HTTP::Request->new(GET => "$redir");
                                 $kanata->add_cookie_header($req3);
                                 my $res3 = $ua->request($req3);
                                 if ($res3->is_success) {
                                         my $respage=$res3->content;
                                         if ($respage=~m/<TD 
class=\"resultsText\" valign=
\"top\">(.*?)<\/TD>/s) {
                                                 my $kot=$1;
                                                 $kot=~tr/\r\n\t/   /s;
                                                 while 
($kot=~m/(.*)<(.*)>(.*)/) {
                                                         $kot=$1.$3;
                                                 }
                                                 return("$kot");
                                         } elsif ($respage=~m/There were no 
records found/
) {
                                                 return("den ton kserw 
aytona!");
                                         } else {
                                                 return("OUA OUA");
                                         }
                                 } else {
                                         return("Entelws OUA");
                                 }
                         }
                 } else {
                         return("Ma teleiws OUA!");
                 }
         } else {
                 return("E pio OUA de ginetai");
         }
}



-- 
Christos Ricudis				ricudis at itc.auth.gr
Systems Administrator				+30-2310-998656
IT Support Center
Aristotle University of Thessaloniki, GREECE




More information about the Linux-greek-users mailing list