WWW::MechanizeとMIME::Liteで作るメール報告ツール
2008年02月10日 written by fjkktkysそれPlaggerでと言われそうですが、かなり今更感がありますけど、Plaggerはそれなりに敷居が高い気がします。
お題はアマゾンアフィリエイトのメール報告ツールです。これを自動化する目的は、ログインから各報告ページまでのクリックなどが、個人的には面倒だなあという感じがするからです。
以下のコードのemailとpassword部分を必要なものに変えて使ってみてください。ログインして、各ページの必要な部分をdivタグごと抜き出してそれをHTMLに適当に切り貼りして(編集メンドイ)、HTMLメールにして送るというだけのものです。
正規表現の替わりにWeb::Scraperを使うのも良さそうです。
#ちなみにAmazon側でリンクのURLの順番などが替わったら、follow_linkの内容を変えないといけません。follow_linkでurlやregex_textを直接指定してもうまくいかなく、さっくり諦めました。
CODE:
-
#!/usr/local/bin/perl
-
use strict;
-
use WWW::Mechanize;
-
use MIME::Lite;
-
-
-
my $url = 'https://affiliate.amazon.co.jp/gp/associates/login/login.html';
-
my $mech = WWW::Mechanize->new(agent => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
-
# login form
-
$mech->get($url);
-
-
-
# login
-
$mech->submit_form(
-
form_number => 1,
-
fields => {
-
email => 'your@email.address',
-
password => 'yourpassword',
-
},
-
);
-
my $total = ( $mech->content() =~ /(<div id=\"sidebar\">.*?)<div id=\"content\" class=\"withSidebar\">/s )[0];
-
# revenue page
-
$mech->follow_link( n => 14 );
-
my $revenue = ($mech->content() =~ /(<div class=\"reporttext\">(.*?)<\/table>)/s)[0];
-
# ordered page
-
$mech->back();
-
$mech->follow_link( n => 15 );
-
my $ordered = ($mech->content() =~ /(<div class=\"reporttext\">(.*?)<\/table>)/s)[0];
-
my $css = ($mech->content() =~ /(<link rel=\"stylesheet\".*?\/>)/)[0];
-
my $html = "<html><head>$css<\/head><body>$total<hr>$revenue<hr>$ordered<\/body><\/html>";
-
my $msg = MIME::Lite->new(
-
From => 'bla@bla.bla',
-
To => 'your@email.address',
-
Subject => 'amazon affiliate report',
-
Type => 'text/html',
-
Data => $html,
-
);
-
$msg->send;





