最近、LWPやWWW::Mechanizeを2007年頃のバージョンから最新のバージョンにしたら、文字コードで色々ハマったのでメモっておきます。 結論から言えば、最新のLWPやWWW::MechanizeはUnicode文字列を適切に扱えますので、以下を心得て使うとハマりどころが少ないかなと思います。 LWP-5.837 $ua->decoded_contentはUnicode文字列*1 Content-Typeでの指定やMETAタグの指定から推測してくれる $ua->content はバイト列 ただし、$ua->contentはContent-Encoding(俗にいうgzip圧縮)の展開をしないので、decoded_contentが無難 WWW-Mechanize-1.66 $mech->content は $ua->decoded_content つまり、Unicode文字列 $me
以前、ハマっていたWWW::Mechanizeの文字化け 半月以上の月日を経て、やっと解決しました。 (とりあえず簡単な方で) このURLが同じ問題かと思われます。 と、 親切なk-z-hさんから、的確なアドヴァイスをいただいていたんですが、 当時の私は、オブジェクトの「お」の字も知らず、ソースコードを眺めて萎えてしまっていました。 しかーし! 「このままでは終わらせじ!板垣死すとも自由は死せず!(意味不明)」 という思いで 「すぐわかる オブジェクト指向 Perl」や「続・初めてのPerl 改訂版」を読み漁り、久しぶりに試してみたのですよ。 したら、できたのです。 こっちのやり方ですが↓ WWW::MechanizeでShift-JISとかのフォームを送信する方法 HTML::Formモジュールの $form->accept_charset( $new_accept ) This met
名前¶ WWW::Mechanize::Examples - WWW::Mechanizeを使用するサンプルプログラム 概要¶ たくさんの人たちがWWW::Mechanizeについて学んできましたし、今もそうして いますし、あなたもそうすることができます! 以下はこの活動を通してユーザーが提供してくれたWWW::Mechanizeのサンプル です。もしあなたがサンプルを持っており、寄付しようと思ってくれたら、 <andy@petdance.com> にメールを送ってください。 ディストリビューション中のt/*.tファイルも見てみると良いでしょう。 これらの例は、何か特定のタスクをこなすことを意図していないことは覚えて おいてください。私の知る限りでは、これらがアクセスするサイトのほうの 変更によりこれらはそれほど長い期間は機能しません。彼らは、みんなが どうWWW::Mechanizeを使
SEの進地です。 スクレイピング(Scraping)とはWebページを取得し、タグを解析し、必要な情報を抽出して利用すること、およびその技術です。こうしたスクレイピングを支援するツールはRSSやWebサービスAPIを提供していないサイトの情報も組み合わせてマッシュアップするWeb 2.0ライクなサービスの構築にも利用できますが、自動化テスト用のツールとしても非常に優秀です。 今回は強力なスクレイピングツールの一つであるWWW::Mechanize(mechと呼称されることもあり)を使ったWebシステムの自動化テスト技法について書いていきます。 WWW::Mechanizeの利用環境 WWW::Mechanizeは元々はPerlのモジュールとしてCPAN(http://www.cpan.org/)で配布されていましたが、現在ではRuby、Pythonにもモジュールが提供され、利用できるように
名前¶ WWW::Mechanize - Perlオブジェクト中のハンディWebブラウザ VERSION¶ Version 1.02 $Header$ 概要¶ WWW::Mechanize、あるいは縮めてMechはWebサイトとのやりとりの自動化を 助けます。これはリンク先やフォームデータの送信を含む、複数のページの取得を サポートします。取得したページはそれぞれ解析され、そのリンクやフォームが 抽出されます。リンクやフォームを選択し、フォームを埋め、次のページを取得 することが可能です。Mechは訪れたURLの履歴を保持しますので、これを問い あわせたり再訪することも可能です。 use WWW::Mechanize; my $mech = WWW::Mechanize->new(); $mech->get( $url ); $mech->follow_link( n => 3 ); $m
これははまりました・・ CPANのWWW::Mechanize 1.34で click() は <input type="submit" name="name1" value="value1"> の分の name1=value1 も送信しますが、submit() ではこれを送信しません。 たとえば下のようなフォームの場合。 <form method="get" action="do.php" name="loginform"> <input type="hidden" name="login" value="123"> <input type="hidden" name="login" value="abc"> <input type="submit" name="login" value="xyz"> </form> Firefox 2.0等のブラウザでsubmitボタンをクリックすると
以下は、他サイトに掲載されている有用なWWW::Mechanize使用例です。 私自身、「Amazon アフィリエイトレポート」を見て、本当にこのWWW::Mechanizeを使おう、と思いました。 Amazon アフィリエイトレポート(blog.bulknews.net)。 WWW::Mechanize を使って bk1 の注文履歴を取得するスクリプト(www.asmate.net)。 mixiの足あとを取得するスクリプト(digit.que.ne.jp)。日記を投稿するスクリプトのアレンジです。 指定したカテゴリの、今日の一覧を取得。 「次のページ」も追いかけて処理します。 use strict; use WWW::Mechanize; my $url = 'http://headlines.yahoo.co.jp/hl'; my $cate_label = 'コンピュータ一覧'; m
BMVC 2010 Papersの論文PDFをダウンロードするスクリプトを書きました。実行すると、論文毎のページにアクセスして、論文名.pdfの形式で保存します。全部ダウンロードするのに大体10分くらいかかります。 #! /usr/bin/perl use warnings; use strict; use URI; use Web::Scraper; use LWP::UserAgent; ## 全論文のPDFページのURLを取得 my $papers = scraper { process "ol", "sessions[]" => scraper { process "li", "papers[]" => scraper { process "a", title => 'TEXT'; process "a", link => '@href'; process "a", id => '
http://d.hatena.ne.jp/end0tknr/20090111/1231635743 昨日、紹介したSpreadsheet::ParseExcelはexcelファイルの内容を読むmoduleですが、excelファイルに出力するmoduleにSpreadsheet::WriteExcelもあります。 http://search.cpan.org/perldoc?Spreadsheet::WriteExcel 機種依存文字出力ならEncode::decode("cp932",〜) decode("cp932",〜)のようにcp932でEncode::decodeした結果をSpreadsheet::WriteExcelに与えると、機種依存文字も問題なく出力されます。 #!/usr/local/bin/perl use strict; use warnings; use Encod
深沢千尋著、技術評論社刊『すぐわかるオブジェクト指向Perl』公式サポートページ。まえがき、目次、サンプル プログラム、正誤表などを掲載News! 小飼弾さんのブログで拙著を紹介していただきました。ありがとうございます! 本ページについて このページは、深沢千尋著、技術評論社刊『すぐわかる オブジェクト指向 Perl』の、作者による公式サポート ページです。 以下の内容からなります。 目次 本書の目次です。 下のまえがきと合わせて、立ち読み気分をお楽しみください。 まえがき 本書のまえがき(本に載っているのと同じもの)です。 サンプル コード 本書で学習に用いるサンプル コードです。 200本ぐらいあります。 ここからダウンロードすればいちいち打ち込まなくてもすみます。 正誤表 印刷された本で発見された間違いを正して行きます。 2008-07-07 第1刷に(ってまだ増刷してませ
This domain may be for sale!
(2005/06/19) PAR というものを使えばperlスクリプトがwindowsの実行形式(exe)化できるらしい。 仕組みはこんな感じ。 Perlインタープリタを含む必要ファイルを全てexeにまとめる(実はzip) exeが実行されると、裏で展開して、中のPerlインタープリタ(dll)でスクリプトが実行される。 なるほどなるほどー。 いちいちActivePerlをインストールして云々とかしなくても いきなり実行できちゃうようになるわけだね!すてき! ※ただし拡張子をzipに変えるだけで、中のソースが覗けるけど で、さっそく使ってみた。ちょっと苦労した! よって以下はインストールメモだ! 現在の最新版は5.8.7.813。入れちゃダメ。 素直にこれをインストールしたら最終的にPARで作ったexeを実行した時に 「プロシージャエントリポイントPL_memory_wrapがダイナミック
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く