Webページがちゃんと表示されてるか、アプリのレビューはどうなってるか、ダウンロード数はどうなっているか、などなど。
・・・理由はともあれ、そんな方は多いのではないでしょうか。
筆者もいろいろあって(?)とあるページがちゃんと表示されているかどうかを1日1回チェックすることになりました。
が、いちいち見に行くのはとっても面倒なうえに大変です。
しかも「あ、昨日チェックするの忘れてた・・・」なんてこともリスクとして容易に想像できますね。
そこで、先日公開したWM3500Rのバッテリー残量をチェックするスクリプトをベースに、Webページをスクレイピング+スクレイピングしたデータをメールで送信(レポート)するスクリプトを作成してみました。
スクレイピングにはBeautifulSoup、メール送信にはメールに関するモジュール(email.MIMEText/email.Header/email.Utils)を使いました。
メールを送信するには「受信者(送信先)のアドレス」はもちろんのこと、「送信元アドレス/SMTPサーバー」の指定/設定が欠かせません。
ここでは送信元に「Gmailのアドレス/サーバーを設定する」ことを想定してスクリプトを作成してみました。
#そのためSMTPサーバーの指定がGmailのものになっています。
このスクリプトのポイントは下記3点です。
- スクレイピングするページの有効/無効を「HTTPステータスコード」ではなく「取得したページに文字列が存在するかどうか」で判断条件としています。(ページによってはコンテンツが見つからない場合に、HTTP200+白紙ページを返すものがあるため)
- pythonは内部文字列をUnicodeとして扱っているため、内部文字列とスクレイピングした文字列を連結させたい場合には「スクレイピングした文字をUnicodeへデコード」するようにしてください。
- メールのメッセージをつくるときには、Subjectの位置に注意してください。SubjectをToより先に書いてメールを送信すると、To部分が "undisclosed-recipients:" となってしまう場合があります。
サンプルスクリプトはこちら。
とあるWebページの<h1>要素をスクレイピングして、その内容をメールで送るようにしています。
メールのSubjectやMessage部分は、送りたい内容が入るように main 部分を書き換えてください。
このスクリプトをcronに登録しておけば、忘れることもないですね。
ここでは毎朝5時にチェックするようにしています。
お約束ですが、過度なスクレイピングはしないようにしてください。
$ vi crontab.txt 0 5 * * * /usr/bin/env python /path/to/scrape2email.py > /dev/null 2>&1 $ crontab ./crontab.txt
筆者はPerlをよく使うのですが、こうやってPython/Rubyをたまに使ってみるのも面白いですね。
#機会があればPerlに関連するエントリも書いてみようと思います。
ステキなスクレイピングライフを!
■参考ページ
http://labs.unoh.net/2007/06/python_2.html
Harrah's Las Vegas Casino & Hotel - JTM Hub
返信削除Experience 충청북도 출장마사지 the thrills 구리 출장샵 of 당진 출장안마 Vegas 안양 출장안마 from the Harrah's Las Vegas. At Harrah's Las 영주 출장안마 Vegas, you'll be centrally located in Las Vegas, steps from LINQ Promenade