架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第二章 爬虫 Spider

Posted on 2009-01-02 00:18  chen eric  阅读(558)  评论(0编辑  收藏  举报

第二章 爬虫 Spider

简单地说,爬虫负责按照url列表爬取网页的内容,实际中需要针对不同的协议设计爬虫程序并优化。写一个优秀的爬虫不是件容易的事情,仅列举部分设计必须考虑到的问题。
1.严格按照robots.txt 来爬取内容,优先按照sitemap来抓取。
2.控制抓取的深度,量力而行。这个和人吃饭一次吃多少的道理是一样的。
3.网络上动态网页数量巨大,而爬虫一般是多线程的,如果爬虫对一个domain爬取的频率过高可能导致服务器无法相应;如何克服,如何让爬虫相对比较智能地平衡网络负载,运算负载,存储负载?
4.不要试图去解析页面中的脚本代码,可能是恶意的程序,也可能是有bug的代码,在本地运行会将计算的消耗提升到不可预期的程度。
5.如何节约带宽,需要检测到网页的更新,请求head信息以获取更新状态。
6.如何把计算网页权重结合到爬虫程序中?因为爬取的过程中还是相当的cpu资源没有被占用,IO和网络是爬虫效率的最大瓶颈。在连接结构还存储在内存中的时候就完成一部分的权值计算能提升爬虫机器的运行效率。