浅析爬虫

大家好,我是“猫玛尼”,一名程序员。

 

这是转型技术本职后的第一篇文章,由于今天晚上一直在给HR的同事,搞个私下的需求,时间上有点晚了,也有点仓促,大家见谅。

 

技术方面,虽然我不算大牛,最近也专研的少了(接下去会重拾技术),但是我这几年来也有自己的理解和积累,可以给大家慢慢地分享分享。

 

想要分享的东西很多,比如我工作上主要使用的是Java平台,曾经也写过一点点前端,偶尔也会接到爬虫的需求,用Pyhton处理一些数据,用shell写一些自动化脚本,自己做一些小的程序等等……

 

思来想去,先给大家简单说说我对爬虫的理解吧。

 

我指的“爬虫”,不是动物的那种“爬虫”,而是我们干IT的人,专门说的“爬虫”。

 

那么,什么是爬虫呢?

 

百度把爬虫和“网络爬虫”归到了一起,解释为:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

 

我自己的理解:爬虫是能够不断地自动访问互联网并将网站内容下载下来的程序或脚本,类似一个机器人,能把别人网站的信息弄过来,再做一些过滤,筛选,归纳,排序,整理等操作,让这些数据产生价值。

 

更进一步,我觉得只要是自动去做的事情,都可以称之为爬虫。比如批量注册,批量评论、点赞,微信QQ聊天机器人等……

 

那么爬虫可以用来做什么呢?

 

其实爬虫的作用很多:

1、google、百度这类搜索引擎采集数据供大家搜索;

2、今日头条、推酷这类内容分发平台,获取其他网站的内容来扩充自己;

3、垂直网站补充数据,比如汽车配件相关的汽车超人、途虎养车;

4、比价工具、银行网点查询这类工具型应用的数据来源

5、个人网站、微信公众号的内容来源

6、获取电影,图片,天气,等数据

等等……以及其他一些更酷的事情,可以去知乎看一篇文章。

 

爬虫他是一门技术活,那就肯定会涉及相关的IT技术了。

 

首先你肯定要理解HTTP相关的知识,要能看得懂什么是请求头,请求方式是什么,不同的响应状态具体代表什么含义,比如200是成功,403是拒绝访问,404是不存在等,还要了解cookie,因为很多网站的登录信息是在cookie里面的,有些网站很机智,会放一些特殊字段在cookie里面。还有鉴权,代理等。

 

前端知识也需要有一定的了解。爬下来的页面需要分析HTML的结构,才能提取到想要的数据。要能够看得懂CSS样式、JS脚本,常用的JS框架比如JQuery,曾经我一个朋友让我到某个轴承网站搞到上面的报告文件,需要登录才能获取,我拿到页面分析了一下JS代码,发现登录相关的那段JS代码有一个明显的漏洞,完全可以绕开去下载。还需要知道Json,因为现在很多网站都是前后盾分离了,还有些是专门提供APP、小程序、公众号的后台API,这些的返回基本上都是Json数据。Ajax就不用说了,现在动态网站很多,都是那种动态加载数据的。

 

并发编程相关的技术,也需要掌握。多进程、多线程这些都是基础,毕竟抓取的量如果很大的话,你一个程序去跑,那要等到猴年马月才能拿到这些数据了,这时候就要用到分布式爬虫了。

 

拿到页面,我们需要用程序去解析这个页面的结构,获取数据,这个时候就需要用到xpath、正则、css选择器这些知识了。我比较推荐xpath,因为它非常的简单,一般打代码的人都能看懂,可以到w3cshool上面去学期,网址是http://www.w3school.com.cn/xpath/index.asp。

 

抓到数据,存下来,才能发挥他的价值。所以还需要了解数据库方面的知识,常用的mysql数据库,轻量便捷快速的NoSQL数据库,搜索Elasticsearch,大数据处理Hoodap等。

 

工欲善其事必先利其器,一些辅助工具和相关类库必不可少。我们可以使用浏览器查看请求,用fiddler、charles这类工具抓取请求并分析他们。Python的话requests这个库非常好用,Java的话我们可以使用okhttp3或者retrofit2去模拟请求。

 

爬虫,把“一个道高一尺魔高一丈”这句话体现的淋漓尽致。爬虫、反爬虫、反反爬虫不断的在上演。所以,作为一名开发爬虫的程序员,一定要知道反爬虫相关的知识,比如User-Agent、header、代理IP池、动态IP请求、分布式、图片验证、网页结构更新、登录、动态加载、特殊字符、css文字等等。

 

再来说说爬虫框架。平时工作中,我最常使用的爬虫框架,就是Python的Scrapy了,这个框架,我觉得干爬虫的应该都知道,非常的强大。他有有一个中间件的概念,使的框架用起来很灵活。Java的话,有一款国人写的,我以前接触过,叫做“Webmagic”,不过我没有深入研究,主要是我觉得用起来比较麻烦,还需要去学习这套框架,有点划不来,不过我不是贬低这个框架,请大家不要误会,毕竟能写出来这个框架,也是非常了不起的。还有一些情况,比如一般简单的爬虫需求,我可能不会去用框架来完成。

 

时间有限,也比较仓促,涉及的不深,以后大家有兴趣,我也会更多的分享这方面的内容,以及编写一些实际的案例,让大家看看我是如何一步一步去分析思考并最终爬取到数据的。

 

还有一点大家需要注意,那就是做爬虫时候的道德问题,要去遵守网站的robots.txt,不要因为自己的目的影响对方网站的正常运行。

 

欢迎围观公号《猫玛尼》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值