将html处理成xml的shell
前段时间纠结于应用数据处理的速度。问了一些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
相关文章
上一篇: 原创Android核辐射监测应用下一篇: 用shell来为rsyncd增加删除站点配置