文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用shell脚本获取网页内容(仅供shell学习参考)

用shell脚本获取网页内容(仅供shell学习参考)

时间:2007-05-14  来源:cnscn2008

#!/bin/sh

#Name   gethtml.sh
#Author cnscn <http://www.cnscn.org>
#Time   2006-09-15
#Uasge  gethtml.sh src.txt
#
#src.txt
#  index.shtmll||http://dnhgzx.chenhr.com/oem_webs/dnhgzx.chenhr.com/main.php||||1
#  index2.shtml||http://www.bankhr.com/main.php||||1
#  index3.shtml||http://www.healthr.com/main.php||||1

function   read_line_file
{
    #传递过来的文件名
    FILENAME=$1;

    #最大超时限制
    MaxTimeout=3;

    #最大尝试次数
    MaxTryNums=3;

    #{{{逐行读取文件内容
    while read  LINE
    do
        #获取源文件中一行内容,并分割成数组
        arr=($(echo $LINE | awk -F"|" '{gsub(/\|\|/,"|");printf "\"%s\" \"%s\" \"%s\" \"%s\"",$1,$2,$3,$4 }' ));
        #获取动态文件
        url=$(echo ${arr[1]}  | awk '{gsub(/"/,""); print $0}');

        #获取静态文件路径
        html=$(echo ${arr[0]} | awk '{gsub(/"/,""); print $0}');

        #如果$url或$html为空则停止继续获取HTML,并进入下一轮循环
        if [ -z $url ] || [ -z $html ]
        then
            continue
        fi

        trynums=0         #初始化尝试次数
        #{{{尝试获取HTML
        while [ "$trynums" -lt $MaxTryNums ]
        do
           if [ $trynums -eq 0 ]
           then
              echo -n  "[${url}]...";
           fi

           #获取数据,并设置超时
           content=$(GET -t $MaxTimeout  $url);

           #{{{如果获取成功,则把内容写入html文件
           if [ $? -eq 0 ]
           then
              echo -n "GET [OK]...";
              echo -e  "${content}" > $html;

              #如果写入HTML文件成功,则报告成功,否则报告失败并提醒用户查看路径和权限
              if [ $? -eq 0  ]
              then
                  echo  "write html: ${html} [OK]";
              else
                  echo  "write html ${html} [Error], please check the directory or permission...";
              fi
              break
           else
              #如果已经是最后一次尝试,则宣告获取失败; 否则进入下一轮尝试
              if [ $trynums -eq $(($MaxTryNums - 1)) ]
              then
                   echo  "Timeout... [error]";
              else
                   echo -n "Timeout, try again...";
              fi
           fi
           #}}}如果获取成功,则把内容写入html文件

           #未能获取成功,则增加尝试次数
           trynums=$(($trynums+1))
        done
        #}}}尝试获取HTML

    done < $FILENAME
    #}}}逐行读取文件内容
}

read_line_file $1
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载