最後,這模組其實能使用的功能很多,絕對不只上面範例中所使用的,
2012年5月12日 星期六
Perl的模組應用 - WWW::Mechanize
WWW::Mechanize 是Perl裡很代表性的一個模組,
我們稱它為網頁代理人,它可以幫你做瀏覽網頁的動作,
包含:點擊連結、帳號密碼登入、擷取所需資訊等等。
因為是針對網頁做處理,所以建議各位要有一點HTML的觀念才容易理解。
在這裡先我們用簡單的例子來說明:
首先,我想先到google的首頁去,並且輸入CPAN下去尋找。
因此我們必須讓程式知道,要在搜尋欄位打上關鍵字,並且按下搜尋按鈕
每個欄位都會有自己的name值,我們可以透過右鍵→檢視原始碼來得知,
很暈對吧!事實上,很多瀏覽器提供的plugin(附加元件),
都可以讓原始碼排的很整齊,讓大家更容易瀏覽,
在這裡要推薦一個好東西,火狐(FireFox)上的一個plugin:Firebug
Firebug可以把CSS、HTML等各自分開,讓使用者更容易閱讀原始碼。
因此我們可以看到,google上的搜尋欄位名稱是q (name="q"),
先做到這裡為止,我們來看程式碼:
use WWW::Mechanize; # 表示我要使用這模組
my $agent = WWW::Mechanize->new();# 建立一個新物件 $agent
$agent -> get("http://www.google.com.tw/"); # 讓$agent連到網頁
$agent -> field("q","CPAN"); # 在名為q的欄位填上CPAN
$agent -> click_button(number => 1); # 點選第一個按鈕 也就是搜尋
這樣就完成很簡單的,進到網站、填寫資料、送出。
接著,我們希望程式繼續往下探索網頁,
點選了超連結後,會進入CPAN網站中,搜尋的分頁。
因為我們已經讓程式點選搜尋按鈕了,
所以剩餘的程式碼為:
$agent -> follow_link(n => 29); # 點選第29個超連結
my $content = $agent ->{content}; # 把整個內容都取下 存在變數
open HTML, ">Agent.html"; # 開啟一個新檔案
print HTML $content; # 把$content存放的值都存進新檔案
這裡的例子,是把所有資訊都存到$content裡
表示說,如果有必要,可以再利用正規表示,
把$content裡,感興趣的東西留下。
事實上到這步,已經算是有實質功能了,
不少灌票程式都是利用這模組稍作修改,
只是把填寫的欄位變多一點(ex: 帳號、密碼),後續就一樣是,
點第幾個連結、到第幾個頁面、投票給哪位候選人等等。
最後,這模組其實能使用的功能很多,絕對不只上面範例中所使用的,
有興趣想深入研究的,CPAN網站上的WWW::Mechanize
有很詳細的介紹。
2012年3月26日 星期一
Perl模組(module)的使用
Perl模組(module)的使用
之前提過,副常式(Subroutine)可以增加程式的重用性,
我們把會重複使用的函式寫進副常式中。
但如果又寫了另外一支程式,同樣要用這些函式呢?
大多數情況,我們會直接把原本的副常式也直接複製進來使用,
但這樣的使用方式,會有一個問題,
萬一往後發現了這個函式有錯誤,
那勢必是要把所有用過該函式的程式,全部改過。
因此,讓某些程式需要用到同一個函式時,都使用同一個模組(module),
如此一來,要修改函式時,只需要修改模組(module),
有使用到這模組(module)的各程式也都會同時套用到。
Perl因為擁有很豐富的模組可以自由使用,而使得Perl有一定的使用族群。
CPAN (Comprehensive Perl Archives Network)
是學Perl不可不知的網站。
CPAN上面充滿了各式各樣的模組,大部份的需求幾乎都有現成的模組,
可以用來解決你的問題。
不過,畢竟資源很多,要確切找符合到自己需求的模組,需要花點時間,
在這裡,我們先討論怎麼安裝及使用模組,
之後會陸續補上其他頁面,來解釋各模組如何使用。
安裝
如果你是跟著阿逸的方式,安裝ActivePerl的話,
那麼從[開始]→[程式]→ActivePerl的資料夾中,會有Perl Package Manager
開啟Perl Package Manager會需要點時間,它可以讓你很輕鬆地安裝你所需要的模組。
開啟後,上方可以輸入你要找的關鍵字,找到模組名稱後,
按下右鍵會顯示 Install 以及該模組名稱。

勾選後,模組的圖案會有個綠色加號,※注意 此時還不是安裝
勾選完成後,右上角有個綠色箭頭,
按下去才是真正開始安裝模組,

安裝模組會花些時間,完成後,模組的圖案會改變。

安裝的部分就到這裡,
接下來就是進入一些好用的模組實例練習了!
訂閱:
文章 (Atom)