Avatar billede extreme Nybegynder
24. januar 2001 - 22:23 Der er 9 kommentarer

Nogle der kan tilpasses dette script!! HURTGIT...

Er der nogle der kan lave dette script om, så det ikke skal bruge TreeBuiler, LWP, traverse, parse da dette ikke er installeret på min server!! Jeg har markeret det ind der sikkert skal laves om, men det kan godt være der er mere!!

#!/usr/bin/perl -w

----- Her skal der rettes-----
use HTML::TreeBuilder;
use LWP::Simple;
use LWP::UserAgent;
-------------------------------

$empty= \"\";
$site = \"\";
open(TEMP, \">temp1.txt\");
print TEMP \"\";
close(TEMP);

@sites=);

-----Her skal der rettes---------
for ($i=0; $i<=$#sites; $i++){
$url = $sites[$i];
$doc = LWP::Simple::get($url);
$tree = HTML::TreeBuilder->new();      # create TreeBuilder
$tree->parse($doc);                    # parse file
$tree->traverse(\\&callback);          # traverse parse tree
$tree->delete();                      # release memory
}
-----------------------------------


sub callback {   
    my($node, $start, $depth) = @_;
    return 1 unless ref($node);
    return 1 unless $start;
    open(TEMP, \">>temp1.txt\");
    if($node->tag() eq \'a\') {
    print TEMP $node->attr(\'href\');
    print TEMP \"\\n\"; }
    close(TEMP);
}

open(TEMP,\"<temp1.txt\");
while (<TEMP>){
$status=0;
next if /(\\w+)\\.cgi(.*)/;
next if /(\\w+)\\.pl(.*)/;
next if /(\\w+)\\?(.*)/;

next unless /^http:\\/\\/(.*)@(.*)/;

($site) = /\\.([^\\.]+)\\.(com|net|org)(.*)/;
if ($site eq $empty){
($site) = /(\\w+)\\.(com|net|org)(.*)/;}
if ($site eq $empty){
($site)= /\\@(([^\\/])+)\\//;}
next if ($site eq $empty);
$input=$site.\"*\".$_;
for ($i=0; $i<=$#links; $i++){if ($input eq $links[$i]) {$status=1; last;}}
if ($status==0) {
{
    splice(@links, $#links + 1, length($input), $input);
  }
}
}
close(TEMP);

@data1 = map { $_->[0] }
        sort { $a->[1] cmp $b->[1] }
        map  { [$_, (/^(([^\\*])+)\\*/)[0]] } @links;
@data = (@data1, @scams);
@data = sort(@data);

open(TEMP,\">temp1.txt\");
for ($i=0; $i<=$#data; $i++){
print TEMP \"$data[$i]\";
}

close(TEMP);


open(BEST,\">../index.html\");
print BEST <<HEAD;
Avatar billede thomasledet Nybegynder
25. januar 2001 - 00:28 #1
Var det ikke smartere bare at installere de ovennævnte modules på din server??? og hvis du ikke har adgang til at installere dem, kunne du så ikke bare smide dem i et dir og tilføje dette til @INC??
Avatar billede extreme Nybegynder
25. januar 2001 - 10:59 #2
Hvor finder jeg disse filer og smider dem i et dic + hvad mener du med at tilføje dette til @INC
Avatar billede extreme Nybegynder
25. januar 2001 - 11:10 #3
Kan du se ud fra koden hvilke filer der skal bruges eller evt via treeBuiler!!

På denne adresse
http://www.freecode.com/cgi-bin/viewproduct.pl?213

Kan man finde de filer jeg skal bruge, men måske du kan hjælpe mig med at finde dem som jeg skal benytte?
Avatar billede extreme Nybegynder
25. januar 2001 - 11:22 #4
Jeg har nu oprettet et dic inde i cgi-bin ved navn HTML med følgende filer:

AsSubs.pm   
Entities.pm   
FormatText.pm   
Parse.pm
Element.pm   
FormatPS.pm   
Formatter.pm   
TreeBuilder.pm

Så prøver jeg at execute og følgende kommer:

Can\'t locate HTML/Parser.pm in @INC (@INC contains: /usr/lib/perl5/i686-linux/5.00404 /usr/lib/perl5 /usr/lib/perl5/site_perl/i686-linux /usr/lib/perl5/site_perl .) at HTML/TreeBuilder.pm line 82.
BEGIN failed--compilation aborted at pass1.pl line 3.

Så oploader jeg Parsen.pm men så kommer følgende fejl:

Can\'t locate LWP/Simple.pm in @INC (@INC contains: /usr/lib/perl5/i686-linux/5.00404 /usr/lib/perl5 /usr/lib/perl5/site_perl/i686-linux /usr/lib/perl5/site_perl .) at pass1.pl line 4.
BEGIN failed--compilation aborted at pass1.pl line 4.


Det burde ikke være nødvendigt at skulle oploade alle disse filer, eller hvad? Er der ikke nogle der kan hjælpe? HURTIGT...
Avatar billede thomasledet Nybegynder
25. januar 2001 - 12:50 #5
Det kan meget vel være nødvendigt at skulle uploade alle de modules den spørger efter. Flere af de forskellige modules benytter sig nemlig af hinanden... treebuilder benytter sig fx af parser.pm.

alle de forskellige modules kan findes hos www.perl.com/CPAN

Held og lykke
Avatar billede extreme Nybegynder
25. januar 2001 - 15:21 #6
Ved fejl to spørger den efter LWP/Simple.pm, vil det sige at jeg også skal oprette et dic der hedder LWP?
Avatar billede thomasledet Nybegynder
25. januar 2001 - 21:14 #7
Yup.... alt hvad den spørger efter, spørger den efter, fordi den skal bruge det.
Avatar billede extreme Nybegynder
26. januar 2001 - 10:35 #8
Det er jo umuligt at finde alt det?
Avatar billede thomasledet Nybegynder
26. januar 2001 - 10:47 #9
Nah.... det tager bare lidt tid.... du skal bare blive ved med at hente modules fra www.perl.com/CPAN indtil den ikke brokker sig mere....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester