今、写真に関するwebサービスを作っている。
そのサービスにおいて、twitterでwordpressの過去記事をつぶやくbotを作る必要があるので、「wordpressの過去記事URL」、「過去記事のtitle」を取得する必要があったので、perlでスクリプトを作ってみた。
以下、作業メモを記載する。
まずは、wordpressのパーマネントリンクの設定を確認する
私の場合は、
カスタム構造の「/archives/%post_id%」としているので、他の記事は、末尾の番号(post_id)が異なるのみとなっていることがわかる。
あとは末尾の番号をしらみつぶしにアクセスして、レスポンスコードを確認する
末尾の番号を変更するのみとなるので、しらみつぶしにアクセスをして、
レスポンスコードが200のみのものを表示するようにした。
特に、私の場合は、300代の番号しかなかったので、300〜400でアクセスしました。
ここ(forのループの番号)は適宜番号を変えてください。
[perl]
use warnings;
use strict;
use LWP;
use LWP::UserAgent;
use Encode qw(encode_utf8);
use encoding ‘utf-8’;
for (my $i=300;$i<400;$i++){
#ここの$iの値は適宜変更すること
my $url = "http://hogehoge.com/archives/$i";
my $ua = LWP::UserAgent->new;
$ua->agent("TestApp/0.1");
my $request = new HTTP::Request(HEAD => $url);
my $header = $ua->request($request);
if ($header->code== 200 ){
print $header->code, "\n";
print $url, "\n";
my $reply = $ua->get($url);
my $content = $reply->decoded_content;
if($content =~ /<title>(.+)<\/title>/){
my $title = $1;
print $title;
}
}
[/perl]
注意
6行目にある「use encoding ‘utf-8’;」
を忘れずに記載してください。
これを忘れると、Wide character in print atのエラーがでてしまいますので。
Leave a Reply