92 lines
3.5 KiB
Markdown
92 lines
3.5 KiB
Markdown
---
|
|
title: WWW::Mechanize::Cookbookの抄訳
|
|
author: kazu634
|
|
date: 2008-09-20
|
|
url: /2008/09/20/_1105/
|
|
wordtwit_post_info:
|
|
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4283;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
|
|
categories:
|
|
- CPAN
|
|
- Perl
|
|
|
|
---
|
|
<div class="section">
|
|
<h4>
|
|
Introduction
|
|
</h4>
|
|
|
|
<p>
|
|
LWP::UserAgentでも同じことができると言うことは了解しておいてね。
|
|
</p>
|
|
|
|
<h4>
|
|
Basics
|
|
</h4>
|
|
|
|
<h5>
|
|
Launch the WWW::Mechanize Browser
|
|
</h5>
|
|
|
|
<pre class="syntax-highlight">
|
|
<span class="synStatement">use </span>WWW::Mechanize;
|
|
<span class="synStatement">my</span> <span class="synIdentifier">$mech</span> = WWW::Mechanize-><span class="synStatement">new</span>( <span class="synConstant">autocheck </span>=> <span class="synConstant">1</span> );
|
|
</pre>
|
|
|
|
<p>
|
|
この「autocheck => 1」は、失敗したら自動的に終了するためのフラグ。自分で初期化できなかったのときの処理を書きたければ、外してね。
|
|
</p>
|
|
|
|
<h5>
|
|
Fetch a page
|
|
</h5>
|
|
|
|
<pre class="syntax-highlight">
|
|
<span class="synIdentifier">$mech</span> -> get( <span class="synConstant">"http://search.cpan.org"</span> );
|
|
<span class="synStatement">print</span> <span class="synIdentifier">$mech</span>->content;
|
|
</pre>
|
|
|
|
<p>
|
|
$mech->contentは、getしたウェブページの生のHTMLを格納している。contentメソッド上では、いかなる方法でもパースされていなければ、処理も加えられていないよ。
|
|
</p>
|
|
|
|
<h5>
|
|
Fetch a page into a file
|
|
</h5>
|
|
|
|
<p>
|
|
取得したページを直接ファイルに書き込みたい場合がある。その場合には、以下のようにする。
|
|
</p>
|
|
|
|
<pre class="syntax-highlight">
|
|
<span class="synIdentifier">$mech</span>->get( <span class="synConstant">"http://www.cpan.org/src/stable.tar.gz"</span>,
|
|
<span class="synConstant">":content_file"</span> => <span class="synConstant">"stable.tar.gz"</span>);
|
|
</pre>
|
|
|
|
<h4>
|
|
Links
|
|
</h4>
|
|
|
|
<h5>
|
|
Find all image links
|
|
</h5>
|
|
|
|
<pre class="syntax-highlight">
|
|
<span class="synStatement">my</span> <span class="synIdentifier">@links</span> = <span class="synIdentifier">$mech</span>->find_all_links
|
|
(<span class="synConstant">tag </span>=> <span class="synConstant">"a"</span>,
|
|
<span class="synConstant">url_regez </span>=> <span class="synConstant">qr/</span><span class="synSpecial">\.</span><span class="synConstant">jpe</span><span class="synSpecial">?</span><span class="synConstant">g|gif|png</span><span class="synSpecial">)</span><span class="synConstant">$/i</span>);
|
|
</pre>
|
|
|
|
<h5>
|
|
Find all download links
|
|
</h5>
|
|
|
|
<p>
|
|
“download”とあるリンク全て取得するよ。
|
|
</p>
|
|
|
|
<pre class="syntax-highlight">
|
|
<span class="synStatement">my</span> <span class="synIdentifier">@links</span> = <span class="synIdentifier">$mech</span>->find_all_links
|
|
(<span class="synConstant">tag </span>=> <span class="synConstant">"a"</span>,
|
|
<span class="synConstant">text_regex </span>=> <span class="synConstant">qr/</span><span class="synSpecial">\b</span><span class="synConstant">douwnload</span><span class="synSpecial">\b</span><span class="synConstant">/</span>);
|
|
</pre>
|
|
</div> |