Αναζήτηση στο 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