Skip to content

Instantly share code, notes, and snippets.

@sioncojp
Created May 2, 2013 00:53
Show Gist options
  • Select an option

  • Save sioncojp/5499475 to your computer and use it in GitHub Desktop.

Select an option

Save sioncojp/5499475 to your computer and use it in GitHub Desktop.
#!/usr/local/bin/perl
#### 引数に株式名を入れて下さい。########
#### ex) perl kabuka.pl 引数 ########
use strict;
use warnings;
use Web::Scraper;
use URI;
use Encode;
use DateTime;
use WWW::Mechanize;
use utf8();
# <- 日付 -> #
my $dt = DateTime->now( time_zone=>'local');
my $date=$dt->strftime('%Y年%m月%d日');
my $msg = $ARGV[0];
my $kabu_mech = WWW::Mechanize->new();
$kabu_mech->get('http://finance.yahoo.co.jp/');
$kabu_mech->submit_form(
fields => {
query => decode_utf8($msg),
},
);
my $kabu_url = $kabu_mech->uri();
if($kabu_url =~ /info.finance.yahoo.co.jp/){
my $kabuka_search = scraper {
process '//th[contains(@id, "viewItem")]',"search[]" => '@title';
};
my $kabuka_list = $kabuka_search->scrape(URI->new("$kabu_url"));
###全部表示させたいなら
# foreach my $kabuka_listname (@{$kabuka_list->{search}}){
# print encode('utf-8', $kabuka_listname);
# }
###表示させたい文字数を制限するなら
for(my $i=0; $i < 7; $i++){
print encode('utf-8', "$kabuka_list->{search}->[$i]");
}
} else {
my $kabu_price = scraper {
process '//table[@class="stocksTable"]/tr[1]/td[2]','yen' => 'TEXT';
process '//table[@class="stocksTable"]/tr[1]/td[3]/span[2]','change' => 'text';
process '//table[@class="stocksTable"]/tr[1]/th[1]/h1[1]','name' => 'text';
};
my $kabuka = $kabu_price->scrape(URI->new("$kabu_url"));
my $kabuka_yen = $kabuka->{yen};
my $kabuka_name = encode('utf-8',"$kabuka->{name}");
my $kabuka_change = encode('utf-8', "$kabuka->{change}");
print "$date $kabuka_nameの株価は$kabuka_yen円です。前日比$kabuka_change (YAHOO! ファイナンス)";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment