日付と記事がペアになっているサイトを見つけた。
http://www.reuters.com/resources/archive/jp/ には、記事のハイライトがずっしりとおいてあった。
- まずは、2010 年から拾っていこう。
- 次に、日付のページを確認する。[http://www.reuters.com/resources/archive/jp/20140801.html]のように YYYYMMDD.html となっている。運が良い。
- そのページにアクセスしてみると、ハイライト記事があるので、下図のように、赤枠の文章を取り出せばOKなわけだ。
プログラムのイメージ
- そこで稚拙ながらスクリプトを書いてみる。
- 日付の数値をぐるぐると 2010 年から 2014 年まで回す。
- 次いでに、データファイルの格納先ディレクトリとデータファイル名を用意しておく。
- その日付に応じたページの内容をごっそりと持ってくる。
- ソースファイル中のマーキングにめぼしを付けて、赤線エリア内の文字を抽出する。
- HTML ソースからテキストのみを取り出す。
- データファイルのフォーマットを作成しておいて、書き出す。
- 途中で、unixtime の変換操作を行う。
ソースコード(アジャイルなので見本として)
#! /bin/sh
# /bin/date -j -f "%Y-%m-%d %H:%M:%S" "2014-08-01 18:00:00" +%s -> 1406910255(GMT)
# /bin/date -j -f "%Y-%m-%d %H:%M:%S" "2014-08-01 18:00:00" +%A -> 金曜日
# /bin/date -r 1262336400 +"%Y-%m-%d %H:%M:%S" -> 2010-01-01
# 2010-01-01 = 1262336400 24H = 86400
# 2014-09-01 = 1409562000
start=1262336400
while true
do
if [ $start -eq 1409562000 ]
then
exit
# END = 2014-08-31
fi
journal=`/bin/date -r $start +"%Y-%m-%d %H:%M:%S"`
#entry140101-180000.txt
jornalfile=`/bin/date -r $start +"%y%m%d"`
filename="entry$jornalfile-180000.txt"
#YY="2013"
#YYMMDD="20131201"
YY=`/bin/date -r $start +"%Y"`
YYMMDD=`/bin/date -r $start +"%Y%m%d"`
PRE1="VERSION|fp-1.0.2|SUBJECT|"
PRE2=`/bin/date -r $start +"%Y-%m-%d "`
PRE3=`/bin/date -j -f "%Y-%m-%d %H:%M:%S" "$journal" +%A`
PRE4="|CONTENT|"
POS1="|AUTHOR|flatpress|DATE|"
POS2=`/bin/date -j -f "%Y-%m-%d %H:%M:%S" "$journal" +%s`
POS3="|CATEGORIES|9|"
start=`expr $start + 86400`
wget=/usr/local/bin/wget
nkf=/usr/local/bin/nkf
awk=/usr/bin/awk
html2text=/usr/local/bin/html2text
#URL_Y="http://www.reuters.com/resources/archive/jp/$YY.html"
URL_D="http://www.reuters.com/resources/archive/jp/$YYMMDD.html"
work1="work1.html"
work2="work2.html"
work3="work3.html"
work4="work4_utf8.txt"
keyword="class=\"headlineMed\""
$wget -O $work1 $URL_D
while read line
do
if echo $line | grep $keyword > /dev/null
then
hit=`echo $line | grep $keyword | $nkf -e`
URL_I=`echo $hit | $awk 'gsub("\047", " "){print $4}'`
break
fi
done < $work1
###
$wget -O $work2 $URL_I
STA="id=\"midArticle_start\""
END="class=\"pageNavigation\""
ERR="nbsp;"
echo > $work3
flag=0
while read line
do
if echo $line | grep $STA > /dev/null
then
flag=1
fi
if echo $line | grep $END > /dev/null
then
flag=0
fi
if echo $line | grep $ERR > /dev/null
then
flag=0
fi
if [ $flag -eq 1 ]
then
echo $line >> $work3
fi
done < $work2
$html2text $work3 > $work4
###
#VERSION|fp-1.0.2|SUBJECT|2014-08-01, Fri|CONTENT|ここからコンテンツ
#コンテンツ
#|AUTHOR|flatpress|DATE|1406910255|CATEGORIES|9|
#
# /bin/date -j -f "%Y-%m-%d %H:%M:%S" "2014-08-01 18:00:00" +%s -> 1406910255(GMT)
# /bin/date -j -f "%Y-%m-%d %H:%M:%S" "2014-08-01 18:00:00" +%A -> 金曜日
echo "---------------------------------------------------------------------------"
echo $journal
echo "---------------------------------------------------------------------------"
echo -n $PRE1 > content/$filename
echo -n $PRE2 >> content/$filename
echo -n $PRE3 | nkf -w >> content/$filename
echo -n $PRE4 >> content/$filename
cat $work4 >> content/$filename
echo -n $POS1 >> content/$filename
echo -n $POS2 >> content/$filename
echo $POS3 >> content/$filename
done
#なんか、相当に時間がかかってる。非力なインタネット回線とマシンの性能の問題なのかな。1日では終わりそうもないなぁ。
データファイルをコピーする
#! /bin/sh
FROM="content"
TO="/usr/local/www/virtual/flatpress.world/fp-content/content"
#for year in 10 11 12 13 14
#do
# for mon in 01 02 03 04 05 06 07 08 09 10 11 12
# do
# mkdir -p $TO/$year/$mon/
# done
#done
#exit
for year in 10 11 12 13 14
do
for mon in 01 02 03 04 05 06 07 08 09 10 11 12
do
cp "$FROM/entry$year$mon"* $TO/$year/$mon/
done
done
#こちらもまだ検証していない。。。
引き続き、こちらの記事をご覧ください。「基本的動作の確認」、「5年分の記事を入れて確認」





