下载并生成电子版新民晚报的脚本
时间:2006-01-12 来源:WillsonZhang
- 说明
偶然机会,我发现在《新民晚报》的网页上提供了pdf格式的电子版报纸的下载和浏览。但是,网页上提供的是分离的每一个版面的报纸的链接。比如说,今天的 报纸有48版,那网页上就提供了48个链接,每个链接就是一个版面的pdf电子文件。这样的话,看起来不是很方便。我从网上找到了一个可以将多个pdf文 件连接成一个大pdf文件的软件。用这个软件,就可以实现每天的电子版报纸就是一个文件。
我写了一个脚本程序,这个脚本程序完成三个任务:1、下载一天所有版面的单独的pdf文件到一个目录中。这个用wget程序就可以完成。2、将所有的文件 拼成一个大的pdf文件,文件名为报纸出版日期,如2005年12月30日的报纸,文件名就取20051230.pdf。3、如果还有这天以前的报纸没有 下载,就依次下载以前的报纸。
我写了一个脚本程序,这个脚本程序完成三个任务:1、下载一天所有版面的单独的pdf文件到一个目录中。这个用wget程序就可以完成。2、将所有的文件 拼成一个大的pdf文件,文件名为报纸出版日期,如2005年12月30日的报纸,文件名就取20051230.pdf。3、如果还有这天以前的报纸没有 下载,就依次下载以前的报纸。
- 程序清单
#!/bin/sh
#
CURHOUR=`date +%H`
PARENT_DIR=$HOME
DIR_PREFIX=$PARENT_DIR/xmwb.news365.com.cn/pdf
JAVA_EXEC=/usr/bin/java
if [ $# -gt 0 ]; then
# parameters found, it specify the date we should deal with.
NOW_DAY=$1
NOW_DAY2=`date -d "$NOW_DAY" +%F`
else if [ $CURHOUR -gt 12 ]; then
# today's newspaper is only uploaded to web after noon.
NOW_DAY=`date +%Y%m%d`
NOW_DAY2=`date +%F`
else
# today's newspaper has not been uploaded to web,
# we can only download yesterday's newspaper.
NOW_DAY=`date -d "yesterday" +%Y%m%d`
NOW_DAY2=`date -d "yesterday" +%F`
fi
fi
i=0
until [ -d $DIR_PREFIX/$NOW_DAY ]
do
# the directory does not exist, we assume the download is not
# performed, otherwise,we think the newspaper has been
# downloaded before.
cd $PARENT_DIR
wget -o $DIR_PREFIX/wget.log -r -l 2 -R *.exe \
http://xmwb.news365.com.cn/pdf/default.asp\?nowDay\=$NOW_DAY
# merge all pdf sheets into one big pdf file.
cd $DIR_PREFIX/$NOW_DAY
# The file with the smallest name contains the cover page.
COVERNAME=`ls|sort|head -1`
mv $COVERNAME ${NOW_DAY}.pdf
$JAVA_EXEC -classpath $HOME/bin/Multivalent20040415.jar tool.pdf.Merge -append ${NOW_DAY}.pdf xm*.pdf
rm xm*.pdf
rm -rf $DIR_PREFIX/default.*
i=`expr $i + 1`
# Deal with the day before current day.
NOW_DAY=`date -d "$NOW_DAY2 -$i day" +%Y%m%d`
done
在这里,要用到拼接pdf文件的软件,这个软件是用java写的,我从internet上查到的,网址是http://multivalent.sourceforge.net/。
我把这个脚本放在crontab中,每天定时(上午9:30和下午4:30)运行一下,用这种方法,我收集了2005年全年的新民晚报电子版,它的排版方式和实际报纸是一样的,用大屏幕显示器看的话很爽。
#
CURHOUR=`date +%H`
PARENT_DIR=$HOME
DIR_PREFIX=$PARENT_DIR/xmwb.news365.com.cn/pdf
JAVA_EXEC=/usr/bin/java
if [ $# -gt 0 ]; then
# parameters found, it specify the date we should deal with.
NOW_DAY=$1
NOW_DAY2=`date -d "$NOW_DAY" +%F`
else if [ $CURHOUR -gt 12 ]; then
# today's newspaper is only uploaded to web after noon.
NOW_DAY=`date +%Y%m%d`
NOW_DAY2=`date +%F`
else
# today's newspaper has not been uploaded to web,
# we can only download yesterday's newspaper.
NOW_DAY=`date -d "yesterday" +%Y%m%d`
NOW_DAY2=`date -d "yesterday" +%F`
fi
fi
i=0
until [ -d $DIR_PREFIX/$NOW_DAY ]
do
# the directory does not exist, we assume the download is not
# performed, otherwise,we think the newspaper has been
# downloaded before.
cd $PARENT_DIR
wget -o $DIR_PREFIX/wget.log -r -l 2 -R *.exe \
http://xmwb.news365.com.cn/pdf/default.asp\?nowDay\=$NOW_DAY
# merge all pdf sheets into one big pdf file.
cd $DIR_PREFIX/$NOW_DAY
# The file with the smallest name contains the cover page.
COVERNAME=`ls|sort|head -1`
mv $COVERNAME ${NOW_DAY}.pdf
$JAVA_EXEC -classpath $HOME/bin/Multivalent20040415.jar tool.pdf.Merge -append ${NOW_DAY}.pdf xm*.pdf
rm xm*.pdf
rm -rf $DIR_PREFIX/default.*
i=`expr $i + 1`
# Deal with the day before current day.
NOW_DAY=`date -d "$NOW_DAY2 -$i day" +%Y%m%d`
done
在这里,要用到拼接pdf文件的软件,这个软件是用java写的,我从internet上查到的,网址是http://multivalent.sourceforge.net/。
我把这个脚本放在crontab中,每天定时(上午9:30和下午4:30)运行一下,用这种方法,我收集了2005年全年的新民晚报电子版,它的排版方式和实际报纸是一样的,用大屏幕显示器看的话很爽。
相关阅读 更多 +