FlatPress.info

Information & blog

日付と記事がペアになっているサイトを見つけた。

 

http://www.reuters.com/resources/archive/jp/ には、記事のハイライトがずっしりとおいてあった。

  1. まずは、2010 年から拾っていこう。
  2. 次に、日付のページを確認する。[http://www.reuters.com/resources/archive/jp/20140801.html]のように YYYYMMDD.html となっている。運が良い。
  3. そのページにアクセスしてみると、ハイライト記事があるので、下図のように、赤枠の文章を取り出せばOKなわけだ。

 

reuters reuters2 reuters3

 

プログラムのイメージ

 

  1. そこで稚拙ながらスクリプトを書いてみる。
  2. 日付の数値をぐるぐると 2010 年から 2014 年まで回す。
  3. 次いでに、データファイルの格納先ディレクトリとデータファイル名を用意しておく。
  4. その日付に応じたページの内容をごっそりと持ってくる。
  5. ソースファイル中のマーキングにめぼしを付けて、赤線エリア内の文字を抽出する。
  6. HTML ソースからテキストのみを取り出す。
  7. データファイルのフォーマットを作成しておいて、書き出す。
  8. 途中で、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年分の記事を入れて確認」

FlatPess 記事

Copyright c  flatpress.info 2015. All Rights Reserved.