原文網址:http://hi.baidu.com/jackywdx/blog/item/35bb33daedb414dfb7fd4867.html
一 LWP::Simple 功能
1. 如何在Perl中使用該模組?
2. 如何擷取一個頁面內容?
my $content = get(’http://www.yahoo.com.cn’); |
get函數把從www.yahoo.com.cn上擷取得頁面內容全部賦給$content這個變數,如果擷取失敗將返回一個undef的值。
3. 如何擷取頭(Header)?
my (b, d, $e) = header(’http://www.yahoo.com.cn’); |
如果擷取成功header函數將返回五個變數,$a-e分別代表內容類型,文檔長度,最後更新的時間,到期和伺服器名稱。
4. 如何輸出指定頁面內容?
my $code = getprint(’http://www.yahoo.com.cn’); |
getprint將試圖列印http://www.yahoo.com.cn/的內容,然後返回一個狀態號,比如成功將返回200,檔案沒有找到將返回404。
5. 如何把擷取的內容儲存到一個檔案中?
my $code = getstore(’http://www.yahoo.com.cn’, ‘/path/file.html’); |
getstore將試圖把擷取的內容儲存到第二個參數指定的檔案中,返回一個狀態號,狀態號的形式如上。
6. 如何同步遠程和本地檔案?
my $code = mirror(’http://www.yahoo.com.cn’,'/path/file.html’); |
mirror函數將比較遠程和本地檔案的一致性,然後返回一個狀態號,比如檔案相同將返回304,如果本地檔案同步成功將返回200。
7. 如何測試返回狀態的正確性?
is_success($code) is_error($code) |
is_success和is_error這兩個函數可以傳遞一個狀態號為參數,程式會判斷返回的是否為成功狀態。比如is_success(403)將返回假。
二 LWP::UserAgent 功能
1、取得頁面頭資訊
#!/usr/bin/perluse strict; use warnings; use LWP::UserAgent;my $ua = LWP::UserAgent->new; $ua->agent(’spider name’); my $res = $ua->head(’http://www.yahoo.com.cn’); foreach ($res->header_field_names) { print “$_: “, $res->header($_), “\n”;} |
2、擷取指定頁面
my $ua = LWP::UserAgent->new; $ua->agent(’spider name’); my $response = $ua->get(’http://www.yahoo.com.cn’); |
3、POST方式提交資料
use strict; use warnings; use LWP 5.64; my $browser = LWP::UserAgent->new; my $word = ‘tarragon’; my $url = ‘http://www.altavista.com/sites/search/web’; my $response = $browser->post( $url, [ ‘q’ => $word, # the Altavista query string ‘pg’ => ‘q’, ‘avkw’ => ‘tgz’, ‘kl’ => ‘XX’, ] ); die “$url error: “, $response->status_line unless $response->is_success; die “Weird content type at $url — “, $response->content_type unless $response->content_type eq ‘text/html’; |
4、通過get方式提交資料
use URI; my $url = URI->new( ‘http://us.imdb.com/Tsearch’ ); # makes an object representing the URL $url->query_form( # And here the form data pairs: ‘title’ => ‘Blade Runner’, ‘restrict’ => ‘Movies and TV’, ); my $response = $browser->get($url); |
三、HTTPS的支援
需要安裝Crypt::SSLeay協議,以便支援加密傳輸。
命令列PPM下的安裝:
ppm> install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd
圖形化下面的安裝:
點擊Edit->Preferences, Add Repository,添加http://theoryx5.uwinnipeg.ca/ppms/作為安裝源。再選擇Crypt-SSLeay即可。
測試代碼:
use strict;
use warnings;
use LWP::UserAgent;my $url = ‘https://www.helsinki.fi/’;my $ua = LWP::UserAgent->new;
my $response = $ua->get( $url );$response->is_success or
die “Failed to GET ‘$url’: “, $response->status_line;
print $response->as_string;