从学校开始接触web crawler ,至今3年时间。今天总结一下学习网络爬虫的路线。
网络爬虫就是模拟browser 访问网上的资源,并对网页源文件进行处理,解析,获取需要的网页信息。
要编写一个网络爬虫,需要具备较为广泛的计算机知识,特别是计算机网络相关储备。
可以从一个简单的网页源文件下载程序入手,之后编写一个简单的解析,字符串处理。获得页面信息。
开发语言:
网络爬虫可以用Java、C\C++、python、C#、R等开发。
目前我用Java开发网络爬虫,Java的优势是有较多的开源的jar包可以使用。开发出来性能也可以。
接下里会用Java语言作为工具写一些开发爬虫的技术。敬请期待
爬虫技术目标:
1.分布式
2.任务调度
3.所见即所得
如果可以实现这三个目标就是爬虫中的高级人才了。
首先要选一个好的开发平台。
爬虫的原理很简单那,基本上任何可以网络编程的语言都可以实现一个网络爬虫,曾经在一本十年前的爬虫技术书籍上看到php写的爬虫,运行在web容器里。
R也可以写爬虫,数据直接采集到内存中,python的开源包基本上可以花最短的时间和最少的代码实现一个爬虫,java功能强大,实现爬虫自然不在话下,新兴的C#自然也可以胜任,C/C++写的爬虫效率高的吓人。
至于怎么选择,还是根据公司的需求。
一般选择java、python可以快速实现生产环境,如果你有一个宏达的目标就用C++
几乎所有的搜索引擎都是用C++编写的爬虫,这也可搜索引擎的特点有关,需要大量的数据,不需要精确的解析。
近日面试了某著名移动互联网公司的爬虫岗位,面试总共三轮,可惜最后一轮表现不佳。
先说情况,某位猎头找到我,推荐这个岗位,一开自己没有答应,犹豫自己的实力是否足够,之后想着试试看,看看爬虫界的高手水平怎样。
第一轮:了解基本情况,看看简历中的一些问题,感觉基本上都会过,毕竟简历经过筛选了。
第二轮:二对一,估计是爬虫组的负责人,问了很多爬虫的细节问题,如怎么解析网页,网页坏掉了解析器会不会崩溃,网页编码怎么获取。
怎么模拟登录,登陆之后怎么提高采集的效率。
怎么解析ajax页面,能否不做渲染。
遇到防采集怎么办
以前感觉这些问题很难,现在感觉这些都是最基本的,如果答不出,基本就没戏了。
第三轮:估计是技术主管之类的吧,有些年纪了,上来就开始往深处文,一些java的深度知识,最后遗憾的出局,以后面试的时候需要做好准备,事先了解常见的基础知识,用一门语言就用到极致。
通过这次面试获得的信息是:
1.此企业的服务器有近千台,估计用于用于爬虫的有上百台,基于对程序效率的要求,没有用java开发,但基本的原理相似。
2.大家遇到的瓶颈基本相似,有高手可以挑战一下,模拟登陆被封IP
爬虫集群的任务调度,ajax的解析。
3.经过高手的提醒,掌握了模拟登录的原理,需寻找某些调试工具。
4.了解网络协议很重要。
互联网金融企业需要爬虫工程师,我可以胜任了。
大家都想到的都差不多,就看谁业务发展的快了。
爬虫、大数据、数据挖掘 交流群:
QQ 177655321
欢迎各位高手交流