Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]684[/thread]

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



<< >> 2 Einträge, 1 Seite
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
renee
 2006-03-03 14:07
#7045 #7045
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe keine Zeit, so etwas zu schreiben, Aber Du solltest Dir vielleicht mal CPAN:HTML::Parser anschauen. Damit kannst Du das gelieferte Ergebnis (HTML-Seite) parsen und mit CPAN:XML::Writer kannst Du dann die XML-Datei erzeugen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 2 Einträge, 1 Seite



View all threads created 2006-03-02 20:04.