Thread Brauche Hilfe bei Skript-Anpassung: Fertigen Parser für neue Site anpassen (1 answers)
Opened by Gast at 2006-03-02 20:04

Gast Gast
 2006-03-02 20:04
#7044 #7044
Hallo Perlis,

an unserem Lehrstuhl hat mal jemand ein Perl-Skript geschrieben, das eine bestimmte Website (Gelbe Seiten) abgefragt hat und die zurückgegebenen Informationen in einer Datei gesammelt hat. Dieses Skript müßte nun angepaßt w
erden, leider fehlen mir aber die erforderlichen Kenntnisse.

Da der Code nicht sehr lang ist, füge ich ihn hier mal ein, vielleicht gibt es ja Jemanden hier, für den die Sache in ein paar Minuten erledigt ist, mein ewiger Dank wird ihm gewiss sein :-)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
$i=1;
$filename="zwischen1";
while(-e $f)
{
       $i++;
       $filename="zwischen".$i;
}



$ul='http://gelbeseiten.de/yp/quickSearch.yp;jsessionid=09014EEFA1C8FFC6F08EBBC46885232C.gelb06TomcatNode2?at=yp&subject=';
$ur='&location=&execute=Suchen';

while(<>)
{
       chomp;
       $term=$ZZZ;
       $u=$ul.$term.$ur;
       @urls=($u);
       for(@urls)
       {
               $t=getweb($ZZZ);
               if ($t=~/Es wurden mehr als /i)
               {
                       $u=$ul.$term.'&location=m%FCnchen&execute=Suchen';
                       print "ZUVIELE TREFFER\n";              
                       $t=getweb($u);
               }


               $t=~s/\n//g;

       $t=~s/#####/ergebnislisteZZZtitleTradeAction/g;
$t=~s/\<\/?b\>//g;

if ($t=~/href=\"([^\"]+)\" class=\"underline\"\>&gt;\<\/a\>/)
{
       $newZZZurl='http://jkv.gelbeseiten-regional.de'.$1;
       print "NEUE SEITE\n";
       push(@urls,$newZZZurl);
}

while($t=~/static\/imgs\/global\/pfeilZZZweiss\.gif\" width=\"7\" height=\"10\" alt=\"\" border=\"0\"\/\>([^\<]+)\<\/a\>(.+?)ergebnislisteZZZtitleTradeAction/g)
{
       $b=$1;
       $bl=$2;
       print "$b\n";
       while($bl=~/padding-top:5px;\" class=\"ausgabe\"\>\s*([^\<]+)/g)
       {
               $kw=$1;
               $kw=~s/\.\.\.//g;
               $kw=~s/^\s+//;
               $kw=~s/\s+$//;
               $kw=~s/\s+/ /g;
               $kw=~s/ - /#/g;
               
               print "\t$kw\n";
       }
}      
}
}
sub getweb
{
       my $url=shift;

       
       undef($/);
       sleep(rand(7));
       system("wget -U=\"User Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705)\" -O $filename -q \"$url\"");
       open(D,"$filename");
       my $t=<D>;
       $/="\n";
       close(D);
       system("rm $filename");
       return($t);
}


Die Seite, um die es geht, ist hier.
Die Informationen sollen später im XML-Format präsentiert werden, die dazu passende DTD sieht so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Die XSLT-Option ist nicht aktiviert!
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE firmenadressen [
<!ELEMENT firmenadressen (record*)>
<!ELEMENT record (url1, url2, company, plz, str, city, country, class, keywords, email, telephone, fax)>
<!ELEMENT url1 (#PCDATA)>
<!ELEMENT url2 (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT plz (#PCDATA)>
<!ELEMENT str (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT class (#PCDATA)>
<!ELEMENT keywords (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT telephone (#PCDATA)>
<!ELEMENT fax (#PCDATA)>
]>
<firmenadressen>
<record>
<url1>
http://www.ispo.de/international/suchen/firmen/firmform.cfm?NVID=1ZZZ2&amp;AusstellerZZZNr=772125&amp;FolgeZZZNr=1&amp;strtab=2006ZZZw&amp;LNG=1&amp;backon=yes
</url1>
<url2>
www.bolzen-online.de
</url2>
<company>
11 Freunde - Intro GmbH &amp; Co. KG
</company>
<plz>
50672
</plz>
<str>
Herwarthstr. 12
</str>
<city>
Köln
</city>
<country>
Deutschland
</country>
<class>
ispo 2006
</class>
<keywords>
Fachzeitschriften, Fachbücher

</keywords>
<email>
[EMAIL=marketing@11freunde.de]marketing@11freunde.de[/EMAIL]
</email>
<telephone>
+49(0)221-9 49 93-0
</telephone>
<fax>
+49(0)221-9 49 93-88
</fax>
</record>
</firmenadressen>


im Voraus schon jedem herzlichen Dank, dem was dazu einfällt.

LG,
Markus

View full thread Brauche Hilfe bei Skript-Anpassung: Fertigen Parser für neue Site anpassen