文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>取某一域下面的域名

取某一域下面的域名

时间:2008-01-15  来源:CUDev

好久不写shell了,今天爽了一把。本来是要写一个爬虫,爬cs.hit.edu.cn的域下面的域名(这里隐去原先的域)。

本来是自己写了一个爬虫,发现效率和稳定性不行,只好还一种思路,想起了google和baidu,用它搜索site:cs.hit.edu.cn就能够查询出很多的站点,从中匹配出来再去重,OK!Let's Go!

#/bin/sh
#Using baidu.com Search

#site:gov.cn
URL="http://www.baidu.com/s?tn=baiduadv&q1=site%3Acs.hit.edu.cn&rn=100&"

#index.html site:(gov.cn)
#URL="http://www.baidu.com/s?tn=baiduadv&q1=index.html&q2=&q3=&q4=&rn=100&lm=0&ct=1&ft=&q5=&q6=cs.hit.edu.cn&"

a=0
if [ ! -z $1 ];then
        a=$1
fi

while true
do
        mv -f baidu.html baidu.html.bak

        wget -O baidu.html -w 5 --random-wait $URL"pn="$a

        if [ -f baidu.html.bak ];then
                diff baidu.html baidu.html.bak > /dev/null
                if [ $? -eq 0 ];then
                        echo "a="$a
                        echo "Rerun the shell:"
                        echo "$./1.sh "$a
                        exit
                fi
        fi

        html2text baidu.html  | grep ".gov.cn/" | cut -f1 -d '/' >> host-baidu.txt
        a=$(( $a+100 ))
        sleep 1
done


需要进行去非法化,去重:
#!/bin/sh

grep -E "gov.cn$" host-baidu.txt > host-baidu.tmp
sort host-baidu.tmp|uniq > baidu-result.txt
rm -f host-baidu.tmp baidu.html

echo "###################################"
echo "   Result In baidu-result.txt"
echo "###################################"

这样的话,就不用自己写爬虫了,只需要baidu或者是google的查询结果就可以了。

问题:不停的去查询将会导致baidu或者是google封锁我们。需要加上延迟。
要么加上sleep 5
或者是
wget -w 20 --random-wait
也可以使用代理来做。

发现,google和baidu在即使使用了延时之后,再访问多了之后,还是被封,所以,我有加上了一些trick。
判断新下载的文件跟上一个下载的文件是否一致;如果一致就说明,已经出现了重复情况,退出程序,返回当前的起始值,再次以新的起始值运行程序。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载