利用LWP::UserAgent與網頁互動[perl]
用perl去抓twitter的api把其中的資料存到主機上的檔案
#!/usr/bin/perl
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use LWP::UserAgent;
use HTTP::Headers;
use JSON;
our %SITE = (
'aaa' => 'https://api.twitter.com/1/users/show.json?screen_name=aaa_account&include_entities=true',
'bbb' => 'https://api.twitter.com/1/users/show.json?screen_name=bbb_account&include_entities=true',
);
&get_twitter_api(\%SITE);
sub get_twitter_api {
my $site = shift;
my $url;
my $class;
my $agent_name='myagent';
my $ua=LWP::UserAgent->new($agent_name);
foreach my $k (keys %$site) {
$url = $site->{$k};
$class = $k;
my $request=HTTP::Request->new(GET=>$url);
$request->header(Accept=>'text/html');
my $response=$ua->request($request);
my $decoded;
my $content = $response->{_content};
$decoded = &JSON::decode_json($content);
my $path = '>/XXX/files/'.$class.'/cron/twitter_followers_count.txt';
open (MYFILE, $path) || die "Can't open file $path : $!\n";;
print MYFILE $decoded->{followers_count};
close (MYFILE);
}
}
.http://stackoverflow.com/questions/8655487/how-to-convert-string-to-json-in-perl
How to convert string to json in perl
用UA抓回來的資料是字串
要把他轉為json
上文範例中的 use Try::Tiny; 是需要安裝的perl套件
安裝方法: $cpan Try::Tiny
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/
15 Awesome Cron Job Examples
跑cron job
1. 查crontab有沒有在跑
$ service crond status
crond (pid 13616) is running...
$ crontab -e 進入編輯
寫入
00 * * * * /usr/bin/perl /home/xxx/cronjob/twitter_followers_count.pl
分 時 日 月 星期
(可先用 * * * * * 每分鐘跑 去看他有沒有跑 或者網路上有用到秒數的方法sleep)
ls -l 看那個檔案最後更新的時間
測試
$ ./your_cron_job.pl
對reference跑迴圈:
http://stackoverflow.com/questions/5249362/how-to-use-foreach-on-hash-a-reference
foreach my $key (keys %{ $ad_grp_ref }) {
...
}
Crontab "*/1" 是什麼意思?
http://www.unix.com/linux/136805-crontab-1-a.html
*/1 * * * * /usr/local/bin/jdumpscan.sh
/1是多餘的,等同於每分鐘。等於
* * * * * /usr/local/bin/jdumpscan.sh
設定crontab -e 預設編輯器
http://superuser.com/questions/281617/change-default-text-editor-for-crontab-to-vim
如果預設編輯器不是vim,則使用下面指令設定
export VISUAL=vim
或
export EDITOR=vim
每30秒跑一次cronjob
http://stackoverflow.com/questions/9619362/running-a-cron-every-30-seconds
crontab -e:
* * * * * /usr/bin/bash /home/ds/test.sh
* * * * * ( sleep 30 ; /usr/bin/bash /home/ds/test.sh)
沒有留言:
張貼留言