轉載本站文章請註明,轉載自:扶凱[http://www.php-oa.com]
本文連結: http://www.php-oa.com/2011/06/09/perl-web-lwp-cookie-wordpress-auto.html
自動化處理,和互連網上應用最多的都是基於 HTTP 協議的,原來我使用 Perl 處理,一直感覺有點亂,後來發現其實很簡單
第一步:簡單了觸一下 LWP::UserAgent 模組的基本方法
第二步:在瞭解一下下面這幾個組件就行了HTTP::Request, HTTP::Response,HTTP::Headers,HTTP::Cookies
第三步: 給網頁的內容取出來,發現 Perl 中的模組超級給力.使用 Web::Scraper 吧,不二的選擇.
下面是我以前寫的一個例子,就是自動登陸到我的 Blog 中取出最新的評論來的小例子.大家可以基於這個寫一個命令列寫 Blog 的小軟體.
#!/usr/bin/perluse strict;use warnings; use HTTP::Request;use HTTP::Cookies; use LWP::UserAgent;use Web::Scraper; my $url = 'http://www.php-oa.com/wp-login.php'; # 用來存 cookiemy $cookie_jar = HTTP::Cookies->new( file => "./cookies.lwp", autosave => 1, ); # 給處理 cookie 的對象放到 LWP::UserAgent 中來處理 cookie# 登陸中my $ua = LWP::UserAgent->new;my $cookies = $ua->cookie_jar($cookie_jar);$ua->agent('Mozilla/6 [cn] (Ubuntu; Linux)');my $res = $ua->post( $url, [ log => 'admin', pwd => 'passwd', 'wp-submit' => 'Log In', ], ); # 根據重新導向的地址,給原來的 cookie 拿上my $redirect_to = $res->header('location');my $req = HTTP::Request->new(GET=>$redirect_to);$cookie_jar->add_cookie_header($req);my $new_res = $ua->request($req); # 處理返回的結果 Response 取出自己要的內容my $scraper = scraper { process '/html/body/div/div/div[2]/div/div[2]/div[2]/div/div/div/div[2]/div[2]/div/div/div/blockquote/p','comment[]' => 'TEXT';};my $result = $scraper->scrape( $new_res->content ); # 輸出結果my @comments = @{ $result->{comment} };for ( 0 .. $#comments ) { print "$_. $comments[$_]\n";}
Web::Scraper 非常推薦,詳細的使用,可以看我以前的文章:
[Perl]網頁分析處理的極品模組Web::Scraper
建議大家學習參考:http://www.perl.com/pub/2002/08/20/perlandlwp.html