2010-11-21 2 views
1

私は非常にプログラミングの新人です。私はその文書を読んでいます。 小さなプロジェクトでは、私はいくつかのPerlの本とPHP-Cookbookを読んでいます。 しかし、私はいくつかのレシピを選び、それを信じているかどうかは分かりません。それは画面上でかなりひどいです。私は今、いくつかの支援必要があることを推測する - 以下の例のいくつかは古くなっているので、仕事をするために小さな実行可能なもの::初心者のための機械化の例

私の小さな知識でのハードされている...私は、仕事Mechanizeの中にいくつかのレシピが必要になります。

see the cpan-site for the mechanize examples

私はより多くを学ぶことが大好きだ

- 本物の例で - あなたはより多くを持っている....私は聞くのが大好き

からあなた

+0

解決しようとしているプログラミングの問題については、特定の質問をしてください。一般的にレシピを求める質問に答えるのは難しいです。 –

答えて

13

あなたは正確にあなたが何であるかについて、もう少し具体的な可能性があり後...例えば、これは、ウェブサイトにログインするためのスクリプトです:

use WWW::Mechanize; 

my $mech = WWW::Mechanize->new(); 
my $url = "http://www.test.com"; 

$mech->cookie_jar->set_cookie(0,"start",1,"/",".test.com"); 
$mech->get($url); 
$mech->form_name("frmLogin"); 
$mech->set_fields(user=>'test',passwrd=>'test'); 
$mech->click(); 
$mech->save_content("logged_in.html"); 

これは、Googleがすべてのページから情報を抽出

use WWW::Mechanize; 
use 5.10.0; 
use strict; 
use warnings; 

my $mech = new WWW::Mechanize; 

my $option = $ARGV[$#ARGV]; 

#you may customize your google search by editing this url (always end it with "q=" though) 
my $google = 'http://www.google.co.uk/search?q='; 


my @dork = ("inurl:dude","cheese"); 

     #declare necessary variables 
     my $max = 0; 
     my $link; 
     my $sc = scalar(@dork); 

     #start the main loop, one itineration for every google search 
     for my $i (0 .. $sc) { 

      #loop until the maximum number of results chosen isn't reached 
      while ($max <= $option) { 
       $mech->get($google . $dork[$i] . "&start=" . $max); 

       #get all the google results 
       foreach $link ($mech->links()) { 
        my $google_url = $link->url; 
        if ($google_url !~ /^\// && $google_url !~ /google/) { 
        say $google_url; 
      } 
        } 
        $max += 10; 
       } 


      } 

シンプルなサイトのクローラー(HTMLコメント)検索を実行するスクリプトです:

#call the mechanize object, with autocheck switched off 
    #so we don't get error when bad/malformed url is requested 
    my $mech = WWW::Mechanize->new(autocheck=>0); 
    my %comments; 
    my %links; 
    my @comment; 

    my $target = "http://google.com"; 
    #store the first target url as not checked 
    $links{$target} = 0; 
    #initiate the search 
    my $url = &get_url(); 

    #start the main loop 
    while ($url ne "") 
    { 
     #get the target url 
     $mech->get($url); 
     #search the source for any html comments 
     my $res = $mech->content; 
     @comment = $res =~ /<!--[^>]*-->/g; 
     #store comments in 'comments' hash and output it on the screen, if there are any found 
     $comments{$url} = "@comment" and say "\n$url \n---------------->\n $comments{$url}" if $#comment >= 0; 
     #loop through all the links that are on the current page (including only urls that are contained in html anchor) 

     foreach my $link ($mech->links()) 
     { 
      $link = $link->url(); 
      #exclude some irrelevant stuff, such as javascript functions, or external links 
      #you might want to add checking domain name, to ensure relevant links aren't excluded 

      if ($link !~ /^(#|mailto:|(f|ht)tp(s)?\:|www\.|javascript:)/) 
      { 
      #check whether the link has leading slash so we can build properly the whole url 
      $link = $link =~ /^\// ? $target.$link : $target."/".$link; 
      #store it into our hash of links to be searched, unless it's already present 
      $links{$link} = 0 unless $links{$link}; 
      } 
     } 

     #indicate we have searched this url and start over 
     $links{$url} = 1; 
     $url = &get_url(); 
    } 

    sub get_url 
    { 
     my $key, my $value; 
     #loop through the links hash and return next target url, unless it's already been searched 
     #if all urls have been searched return empty, ending the main loop 

     while (($key,$value) = each(%links)) 
     { 
      return $key if $value == 0; 
     } 

     return ""; 
    } 

これは本当にあなたが何をしているかによって変わりますが、もっと多くの例が必要な場合は、perlmonks.orgを参照してください。

は間違い

+0

こんにちはサイバーガードデザイン!あなたは大丈夫ですか?これは予想以上のものです。本当に。私は後日この例を詳しく見ていきます。再び - この素晴らしいヘルプのおかげで多くの。あなたは今日の人です!確実なこと!アポロマン – zero

関連する問題