如果安裝active perl,預設就有裝這個套件了。

基本用法:
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $URL = '想抓取的網址';
$mech->get( $URL );

要取得回應的資料。
my $html = $mech->response->content;


這一版的WWW::Mechanize抓取的時候,網頁常有亂碼,
所以在網路上找到了一個solution。
先安裝Encode-Detect-CJK。

使用方法:
use Encode;
use Encode::Detect::CJK qw/detect/;

my $html = $mech->response->decoded_content(charset => 'none');
my $charset = detect($html);
$html = decode( $charset, $html, Encode::FB_XMLCREF );

這時$html即為頁面之content。


WWW::Mechanize對於抓取第一次連進去需看版權宣告之類的網頁,
有一個很好用的方法。

如果頁面單純只有一個form,那我們只要:
$mech->submit();

如果需要勾選一些資料,而且不只一個form:
(假設有一個下拉選單,name是ddl,還有一個radiobutton,name是rb)
$mech->submit_form(
form_name => 'form的name',
fields => {
ddl => '這個值給下拉選單的value',
rb => '這個值塞你要選取的radiobutton是第幾個,第一個值是1,以此類推',
}
);


如果欲抓取之頁面要一直點hyper link,而且中間又一直轉址,有一個follow link可以使用。
#若同一組文字不只一個,n表示為第幾個。
$mech->follow_link(n => 數字, text => '此hyper link之文字');

所以也有以下用法:
$mech->follow_link(n => 數字); #直接連第幾個連結


更多用法請參考
CPAN上關於WWW::Mechanize的介紹

arrow
arrow
    全站熱搜

    chenys 發表在 痞客邦 留言(0) 人氣()