今治市水道局水源状況の内容をPlaggerで自動保存のその後
Gmailに送られるメールのサブジェクトに日付を持ってきたくていじってた。結果こんな感じになった。
- tamagawadam.yaml
author: wireself match: http://www\.imabari-suidou\.jp/left\.html extract: (<table width="94%" border="0" cellpadding="5" cellspacing="0">.*?<td>(\x{5e73}\x{6210}.*?\x{65e5})<br>.*?)<br>.</td>.</tr>.</table>.</td>.</tr>.</table>.</body>.</html> extract_capture: body title
global: plugin_path: - C:\Perl\site\lib\Plagger\Plugin assets_path: C:\Perl\site\lib\Plagger\assets timezone: Asia/Tokyo log: level: info cache: base: C:\plagger plugins: - module: Subscription::Config config: feed: - http://www.imabari-suidou.jp/left.html - module: CustomFeed::Config - module: Filter::Rule rule: module: Deduped compare_body: 1 path: C:\plagger\dedupe-tamagawadam.db - module: Filter::BreakEntriesToFeeds config: use_entry_title: 1 - module: Publish::Gmail config: mailto: hoge+tamagawadam@gmail.com mailfrom: hoge@gmail.com mailroute: via: smtp_tls host: smtp.gmail.com:587 username: hoge@gmail.com password: PASSWORD
Filter::BreakEntriesToFeedsで“use_entry_title: 1”とすればtitleに入った文字列がサブジェクトになってくれるらしいことはわかってたのだが、ページ内の日付部分の取得が難航した。
日付部分は“<td>平成19年 3月 9日<br>”なので、“<td>(平成.*?日)<br>”で取得できるはずがどうしてもうまくいかなかった。原因はページがshift_jisで書かれているため日本語文字のマッチングがうまくいかないかららしいとはわかったが、じゃあどうすりゃいいのか。
ようやく見つけたのがこちら。
真似してPublish::Debugとやってみると
Plagger::Plugin::CustomFeed::Config [info] Add (今治市水道局) Plagger [debug] $VAR1 = bless( { 'link' => 'http://www.imabari-suidou.jp/left.html', 'entries' => [ bless( { 'link' => undef, 'widgets' => [], 'meta' => {}, 'tags' => [], 'body' => bless( { 'data' => "<table width=\"94%\" border=\"0\" cellpadding=\"5\" cellspaci ng=\"0\"> <tr bgcolor=\"#FFFFFF\"> <td>\x{5e73}\x{6210}19\x{5e74} 3\x{6708} 9\x{65e5}<br> \x{5348}\x{524d}9\x{6642}\x{3000}\x{73fe}\x{5728} <br> <br> <font color=\"#006600\">\x{25a0}\x{30c0}\x{30e0}\x{8caf}\x{6c34}\x{7387}</font>< br>\x{3010}\x{7389}\x{5ddd}\x{30c0}\x{30e0}\x{3011}<br> <img src=\"dam/dam5.gif\" width=\"64\" height=\"34\" hspace=\"4\" vspace=\"2\"> <br> <table width=\"95%\" border=\"0\" align=\"center\"> <tr> <td><font size=\"-1\">\x{8caf}\x{6c34}\x{91cf}</font></td> <td align=\"right\"><font size=\"-1\">7,285,000 m3</font></td> </tr> <tr> <td><font size=\"-1\">\x{8caf}\x{6c34}\x{7387}</font></td> <td align=\"right\"><font size=\"-1\">98.4 %</font></td> </tr> <tr> <td><font size=\"-1\">\x{5bfe}\x{524d}\x{65e5}\x{6bd4}</font></td> <td align=\"right\"><font size=\"-1\">\x{b1}0.0 \x{30dd}\x{30a4}\x{30f3}\x{30c8} </font></td> </tr> </table> <font color=\"#006600\"> </font><br>\x{3010}\x{53f0}\x{30c0}\x{30e0}\x{3011 }<br> <img src=\"dam/dam4.gif\" width=\"64\" height=\"34\" hspace=\"4\" vspace=\"2\"> <br> <table width=\"95%\" border=\"0\" align=\"center\"> <tr> <td><font size=\"-1\">\x{8caf}\x{6c34}\x{91cf}</font></td> <td align=\"right\"><font size=\"-1\">593,807 m3</font></td> </tr> <tr> <td><font size=\"-1\">\x{8caf}\x{6c34}\x{7387}</font></td> <td align=\"right\"><font size=\"-1\">73.3 %</font></td> </tr> <tr> <td><font size=\"-1\">\x{5bfe}\x{524d}\x{65e5}\x{6bd4}</font></td> <td align=\"right\"><font size=\"-1\">-0.4 \x{30dd}\x{30a4}\x{30f3}\x{30c8}</fon t></td> </tr> </table> <br> <font color=\"#006600\">\x{25a0}\x{964d}\x{96e8}\x{91cf}</font><br><font size=\" -1\">\x{3010}\x{89b3}\x{6e2c}\x{5730}\x{70b9}\x{ff08}\x{7389}\x{5ddd}\x{753a}\x{ 6728}\x{5730}\x{ff09}\x{3011}</font> <table width=\"95%\" border=\"0\" align=\"center\"> <tr> <td><font size=\"-1\">\x{524d}\x{65e5}\x{96e8}\x{91cf}</font></td> <td align=\"right\"><font size=\"-1\">0.0 mm</font></td> </tr> <tr> <td><font size=\"-1\">\x{5f53}\x{6708}\x{7d2f}\x{8a08}\x{96e8}\x{91cf}</font></t d> <td align=\"right\"><font size=\"-1\">23.0 mm</font></td> </tr> <tr> <td><font size=\"-1\">\x{5f53}\x{6708}\x{5e73}\x{5e74}\x{96e8}\x{91cf}</font></t d> <td align=\"right\"><font size=\"-1\">112.0 mm</font></td> </tr> </table> <br> <font color=\"#006600\">\x{25a0}\x{5730}\x{4e0b}\x{6c34}\x{4f4d}</font><br> <table width=\"95%\" border=\"0\" align=\"center\"> <tr> <td><font size=\"-1\">\x{89b3}\x{6e2c}\x{4e95}\x{306e}\x{6c34}\x{4f4d}<br>\x{ff0 8}\x{7247}\x{5c71}\x{6c34}\x{6e90}\x{5730}\x{ff09}</font></td> <td align=\"right\"><font size=\"-1\">5.30 m</font></td> </tr> <tr> <td><font size=\"-1\">\x{5bfe}\x{524d}\x{65e5}\x{6bd4}</font></td> <td align=\"right\"><font size=\"-1\">\x{b1}0.0 m</font></td> </tr> </table> </td> </tr> </table> ", 'type' => 'html' }, 'Plagger::Text' ), 'rate' => 0, 'summary' => bless( { 'data' => "<table> <tr bgcolor=\"#FFFFFF\"> <td>\x{5e73}\x{6210}19\x{5e74} 3\x{6708} 9\x{65e5}<br>
こんな感じで取得内容がコンソールに表示されたので、該当部分を見つけて利用した。なるほどなあ。