网络爬虫 学习2

那么依据特征,其实也就是要求了,如何设计爬虫呢?要注重哪些步骤呢?  
1】 url 的遍历和纪录 
这点 larbin 做得非常的好,其实对于url的遍历是很简单的,例如: 
cat [what you got]| tr \" \\n | gawk '{print $2}' | pcregrep ^http:// 
就可以得到一个所由的 url 列表  
2】多进程 VS 多线程 
各有优点了,现在一台普通的PC 例如 booso.com 一天可以轻松爬下5个G的数据。大约20万网页。  
3】时间更新控制 
最傻的做法是没有时间更新权重,一通的爬,回头再一通的爬。 
通常在下一次爬的的数据要跟上一次进行比较,假如连续5次都没有变化,那么将爬这个网页的时间间隔扩大1倍。 

假如一个网页在连续5次爬取的时候都有更新,那么将设置的爬取时间缩短为原来的1/2。 

注重,效率是取胜的要害之一。  
4】爬的深度是多少呢? 
看情况了。假如你比较牛,有几万台服务器做网络爬虫,我劝您跳过这一点。 
假如你同我一样只有一台服务器做网络爬虫,那么这样一个统计您应该知道: 

网页深度:网页个数:网页重要程度 
0 : 1 : : 10 
1 :20 : :8 
2: :600: :5 
3: :2000: :2 
4 above: 6000: 一般无法计算 

好了,爬到三级就差不多了,再深入一是数据量扩大了3/4倍,二是重要度确下降了许多,这叫做“种下的是龙种,收获的是跳蚤。” 

5】爬虫一般不之间爬对方的网页,一般是通过一个Proxy出去,这个proxy有缓解压力的功能,因为当对方的网页没有更新的时候,只要拿到 header 的 tag就可以了,没有必要全部传输一次了,可以大大节约网络带宽。 

apache webserver里面纪录的 304 一般就是被cache的了。  
6】请有空的时候照看一下robots.txt  
7】存储结构。 
这个人人见智,google 用 gfs 系统,假如你有7/8台服务器,我劝你用NFS系统,要是你有70/80个服务器的话我建议你用afs 系统,要是你只有一台服务器,那么随便。 

给一个代码片断,是我写的新闻搜索引擎是如何进行数据存储的:  
NAME=`echo $URL |perl -p -e 's/([^\w\-\.\@])/$1 eq "\n" ? "\n":sprintf("%%%2.2x",ord($1))/eg'` 
mkdir -p $AUTHOR 
newscrawl.pl $URL --user-agent="news.booso.com+(+http://booso.com)" -outfile=$AUTHOR/$NAME 

Posted at November 10, 2004 01:04 PM by Liang at 01:04 PM | Comments (2) | TrackBack(0) | Booso!| 
====================================== 
爬网这个词你可以理解为"建立索引",各大搜索引擎现在都用爬网这个词,都可以理解为建立索引这个意思
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值