今、写真に関するwebサービスを作っている。
そのサービスにおいて、twitterでwordpressの過去記事をつぶやくbotを作る必要があるので、「wordpressの過去記事URL」、「過去記事のtitle」を取得する必要があったので、perlでスクリプトを作ってみた。
以下、作業メモを記載する。
まずは、wordpressのパーマネントリンクの設定を確認する
私の場合は、
カスタム構造の「/archives/%post_id%」としているので、他の記事は、末尾の番号(post_id)が異なるのみとなっていることがわかる。
あとは末尾の番号をしらみつぶしにアクセスして、レスポンスコードを確認する
末尾の番号を変更するのみとなるので、しらみつぶしにアクセスをして、
レスポンスコードが200のみのものを表示するようにした。
特に、私の場合は、300代の番号しかなかったので、300〜400でアクセスしました。
ここ(forのループの番号)は適宜番号を変えてください。
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; } }
注意
6行目にある「use encoding ‘utf-8’;」
を忘れずに記載してください。
これを忘れると、Wide character in print atのエラーがでてしまいますので。