前段时间纠结于应用数据处理的速度。问了一些java前辈,没得到什么好方法,倒是有位前辈说到的提醒了我:数据放到服务器上处理。无奈本人在服务器上写的最熟的还是shell,就放弃用php通过json来减少更多流量的想法,用shell脚本将网页源代码做成xml,这样一个文件就只有几KB了,速度也变得飞快,非常有效,分享出来。各位看官随便看看,主要是逻辑,如有更好的建议,欢迎留言。

附上应用的下载地址:辐射查询应用 应用汇下载页面

技术支持页面:原创Android核辐射监测应用

#!/bin/bash
# By Chen Zhidong
# http://sillydong.com
# Email:njutczd+gmail.com

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH

#Begin
cd /xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
wget --output-document=hist.tmp -q http://xxxxxxxxxxxxxxxxxxxxxxxxxx > /dev/null
echo -e "\n<android>" > hist.xml
fgrep "hh14" hist.tmp | sed 's/.*a href=\"\.\([^"]*\).*\(2011.*0\).*/<item><url>http:\/\/xxxxxxxxxxxxxxxxx\1<\/url>\n<time>\2<\/time><\/item>/' | awk 'NR%3==1' | sed 's/></>\n</' >> hist.xml
echo "</android>" >> hist.xml
rm -f hist.tmp

HISTORYS=`grep "url" hist.xml | sed 's/<[^<>]*>//g'`
i=0
for hist in $HISTORYS
do
    wget --output-document=$i.tmp -q $hist >/dev/null
    echo -e "

\n<android>" > $i.xml
    egrep "<[^/>]*>([^<]*)</[FS]" $i.tmp | sed '1,6d' > $i.tmp.tmp
    linenu=0
    while read line
    do
        mod=$(($linenu%5))
        case $mod in
        0)
            echo $line | sed 's/.*<[^\/>]*>\([^<]*\)<\/[FS].*/<item>\n<city>\1<\/city>/' >> $i.xml
            ;;
        1)
            echo $line | sed 's/.*<[^\/>]*>\([^<]*\)<\/[FS].*/<range>\1<\/range>/' >> $i.xml
            ;;
        2)
            echo $line | sed 's/.*<[^\/>]*>\([^<]*\)<\/[FS].*/<average>\1<\/average>/' >> $i.xml
            ;;
        3)
            echo $line | sed 's/.*<[^\/>]*>\([^<]*\)<\/[FS].*/<standard>\1<\/standard>/' >> $i.xml
            ;;
        4)
            echo $line | sed 's/.*<[^\/>]*>\([^<]*\)<\/[FS].*/<result>\1<\/result>\n<\/item>/' >> $i.xml
            ;;
        esac
        linenu=$(($linenu+1))
    done < $i.tmp.tmp
    echo "</android>" >> $i.xml
    rm -f $i.tmp.tmp $i.tmp
    i=$(($i+1))
done
#End