如何做最好的定向爬虫架构
姓名:郭钟
当前职位:某创业公司担任爬虫工程师
摘要
随着互联网信息的不断发展,信息数据的挖掘技术也不断的发展。网络爬虫技术也随之得到了巨大的发展。而对于内容型驱动的网站来说反扒是一件必不可少的事情。很多网站用Jquery加壳、登录验证、限制单位IP每秒请求次数来阻止爬虫窃取数据。所以爬虫的智能性也受到越来大的挑战。由此得出一个适应现国内爬虫架构的解决方案。
引言
目录
1、------------------URL深度优先策略的再优化
2、------------------模拟浏览器内核使抓取更强大
3、------------------适应失效代理ip的管理优化
4、------------------URL上下文使开发业务逻辑更加简单
5、------------------多线程的控制
6、------------------任务的定时问题
7、------------------dump出错页面将使调试更加方便
8、------------------抓取log解决中断抓
9、------------------爬虫的jvm参数优化
10、-----------------建立在hadoop基础上实现分布式
1、URL深度优先策略的再优化
深度优先搜索策略。这种策略的主要思想是,从根节点出发找出叶子节点,以此类推。在一个网页中,选择一个超链接,被链接的网页将执行深度优先搜索,形成单独的一条搜索链。当没有其他超链接时,搜索结束。然而这种自动化URL深度自定义并不能达到业务要求的最佳优先状态。
我们来看传统URL队列模型。图中有一个入口URL“A”解析得到三个跟进URL“B”。传统的抓取顺序如飞机图标标注。每个子入口URL顺序抓取得到“C”。问题出来了。假如需要抓取信息就在C那么第一个C1出来就可去抓取C1的信息了。为什么要迟迟等到B抓取完了才能开始抓取C呢。而且如果根据URL多深度大的话下级URL越积越多。这是对内存的巨大的浪费,所以爬虫容易内存溢出问题也在这里体现了一个方面。
最佳的优化效果得到了一组“B”URL后递归抓取完每个B及下面的子