サイトマップを作成したい

概要

インプットファイルの文字列をUTF-8に変換し
変換した文字列をURLのパラメータとして付与したサイトマップ作成する

インプットファイル(input.txt)

AAA
BBB

AAA
CCC

ソース

#!/usr/local/bin/perl
use strict;
use URI::Escape;

my $file = "input.txt";

my $count = 0;
open (FH, $file);
	open (DATA, ">>output.txt");
		while (my $line = <FH>){
			$line = trim($line);
			my $encoded = uri_escape $line;

			if (length $encoded < 1){
				$count = 0;
				next;
			}
			if ($count == 0){
				print DATA '<url>'."\n";
				print DATA '<loc>http://XXXXXXX.com?param1';
				print DATA "$encoded";
				$count += 1;
			} else {
				print DATA '&param2=';
				print DATA "$encoded";
				print DATA '</loc>'."\n";
				print DATA '<lastmod>2016-01-01T12:00:00+01:00</lastmod>'."\n";
				print DATA '</url>'."\n";
				$count = 0;
			}
		}
	close (DATA);
close(FH); 

sub trim {
	my $val = shift;
	$val =~ s/^\s*(.*?)\s*$/$1/;
	return $val;
}

アウトプット(output.txt)

<url>
<loc>http://XXXXXXX.com?param1=AAA&param2=BBB</loc>
<lastmod>2016-01-01T12:00:00+01:00</lastmod>
</url>
<url>
<loc>http://XXXXXXX.com?param1=AAA&param2=CCC</loc>
<lastmod>2016-01-01T12:00:00+01:00</lastmod>
</url>

組み合わせの一覧を出す

概要

2個の組み合わせの一覧を出したい

フォルダ構成

/
└test.pl
└lib
 └Math
  └Combinatorics.pm
└input.txt
└output.txt

インプットファイル(input.txt)

AAA
BBB
CCC

ソース

#!/usr/local/bin/perl
use lib 'lib';
use strict;
use Math::Combinatorics;
use Data::Dumper;
use utf8;

my $file = "input.txt";
my @list;
# 2つの組み合わせ
my $combination_num = 2;

open (FH, $file);
	while (my $line = <FH>){
		push(@list, $line);
	}
close(FH); 

my @combine = combine($combination_num, @list);

open (DATA, ">>output.txt");
foreach my $ref(@combine){
    print DATA "@$ref\n";
}
close (DATA);

アウトプット(output.txt)

AAA
BBB

AAA
CCC

BBB
CCC

itunes APIからiPhone Appの情報を取得

概要

iPhone Appの情報を取得したい場合に使えるAPI

URL

Appの情報を取得したい場合

https://itunes.apple.com/lookup?country=jp&id={app_id}

ユーザレビューの情報を取得したい場合

http://itunes.apple.com/jp/rss/customerreviews/id={app_id}/json

{app_id}に関してはitunesのidXXXXXX部分に置き換えてください

リダイレクトされているページを調査してみる

概要

調査したいSPページのURL一覧に対して、metaタグでrefreshを指定しているURL一覧を抽出したい

インプットファイル(input.txt)

http://XXXXXXX
http://XXXXXXX

ソース

use strict;
use warnings;
use LWP::UserAgent;
use HTML::TreeBuilder;

# iphoneのフリをする
my $user_agent = "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13F69 Safari/601.1";

# file指定
my $input="input.txt";
my $output="output.txt";
my @files;

# input file読み込み
open (IN, $input) or die "$!";
while (<IN>) {
 push(@files, $_);
}
close (IN);

# input fileの中身を調査する
foreach my $var(@files){
 # 改行コードの削除
 $var =~ s/(\r\n|\r|\n)$//g;
 my $url = $var;

 # 0.5秒sleepする
 select undef, undef, undef, 0.5;

 # LWPを使ってサイトにアクセスし、HTMLの内容を取得する
 my $ua = LWP::UserAgent->new('agent' => $user_agent);
 my $res = $ua->get($url);
 my $content = $res->content;

 # HTML::TreeBuilderで解析する
 my $tree = HTML::TreeBuilder->new;
 $tree->parse($content);

 # 必要なタグを抜き出す
 foreach my $tag ($tree->find("meta")) {
 # metaタグ内にrefreshがあるものを抽出する
 if ($tag->as_HTML =~ /refresh/){
 # 調査対象となるURLとmetaタグをoutput fileに出力
 open (OUT, ">>$output") or die "$!";
 print OUT $url.",".$tag->as_HTML."\n";
 close (OUT);
 }
 }
}

アウトプット(output.txt)

http://XXXXXXX,<meta URL=http://XXXXXXX" http-equiv="refresh" />