最近好多小伙伴都在问:会爬虫吗?怎么爬虫?趁着今天休病假从医院回来有空闲时间写,就来绍一下爬虫,不会涉及特别深的技术,可以算一个“爬虫初识”。
我不喜欢上来就听技术,一个东西的存在总有个来龙去脉,就像讲故事一样,想必各位也是,那么何为爬虫?
一.何为爬虫?
“爬虫”就是一种为用户获取到服务器端网页数据的技术,我们常用的浏览器就是爬虫原理:我们通过搜索功能获取到远端服务器上的一个相关网页,这其实就是一种最常用的爬虫技术,只不过这网页数据并不是我们爬下来的,而是浏览器的爬取结果。而我们爬取到的第一张网页上面还会看到其他相关链接,再次点击又能看到另外的页面数据,这也是“爬”的结果,浏览器就是这样,用爬虫技术为我们将世界上的相关网页都get到,这技术的核心好比一只小虫子(就是下面那只),在互联网上爬来爬去为我们搜索数据,因此,就称之为“爬虫”!
那么,我们经常希望得到一些目标数据,但是手里有没有,这时就需要模拟浏览器的行为去爬取。
我们最先开始要明确的是:像所有网页请求一样,我们发出一个“请求”,服务器返回我们一个“回答”,这也是标准的浏览器搜索方式。
二.能爬取什么数据?
(1)网页文本:HTML、JSON格式文本等;
(2)图片、视频:都是二进制数据;
(3)其他:一时间想不起来其他都有啥了,见谅···
三.爬虫“请求”分类
这里的“请求”主要分为两种:get和post;get请求是我们平时直接搜索获取数据,而post是向远端的服务器提交数据。还有其他的但是不常用,就暂不谈了。
四.爬虫基本原理
首先,要有爬取目标url,当然我们的目标是大量网页的时候就要有一个url池子,一个网页一个网页的爬;
其次,由于网站都不喜欢被别人爬去数据,过快的爬取速度会搞瘫网站,所以我们需要简单的伪装自己,将自己伪装成一个常用的浏览器(百度、谷歌都行),也就是伪装浏览器的核心就是在我们发起“请求”中增加一个“User-Agent”,让网站以为我是浏览器在正常的浏览网页,这样一来它就不能拒绝我的请求。
然后,我们发出“请求”,由于在网站眼里我们已经是一个正常的浏览器搜索引擎了,他就没有理由不对我们的请求进行应答,我们就顺理成章的拿到了它的原始数据页面。
五.爬虫流程
(1)发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求中可以包含很多信息,常用的有headers等;
(2)获取响应内容:若服务器能正常响应,会得到一个Response,其内容就是索要获取的页面内容,类型可能是HTML、JSON字符串,二进制数等等;
(3)解析数据:利用正则表达式、网页解析库等手段将获取到的网页进行解析,提取我们需要的数据部分;
(4)保存数据:这一块就略过了,因为保存的形式多种多样,文本、数据库等等都行;
六.Response中的响应状态
服务器返回200状态码:响应成功!
服务器返回301状态码:url跳转了~
服务器返回404状态码:网页找不到了,可惜~~
服务器返回502状态码:服务器有错误···
依据状态码,我们可以直观的看到我们爬取是否成功,是否错误,错误在哪里。
七.最最最重要的事情
我可是听说不少爬数据的人都进去了,“技术无罪”这句话好像听着有道理但是警察可不管,所以,这技术发展的同时还伴随着道德和法律,其实说这些就是为了引出一个东西:Robots协议。
爬亦有道,其实大家都不喜欢自己的数据被爬,因为数据的保密性和网站的鲁棒性都会收到威胁,因此,大家坐在一起商谈达成了一项道德约束,也就是每个网站都会提供一个网页文本,也就是Robots.txt文本,上面写了我们网站的哪些东西你可以爬,哪些你不可以爬。下面是Robots.txt文本的格式:
User-Agent:xxx //可以被允许的浏览器
Allow:xxx //允许你做的事情
Disallow:xxx //不允许你做的事情
Sitemap:xxx //如果你非要爬的话,别瞎搞,我给你一个站点地图,你去那里面随便爬好吧
这其实就是个道德约束,但是呢估计没人遵守,因为恰恰是你不让我爬的数据才是我想要的数据,要不然我就直接去贵州的大数据交易所去买了。但是还是要提醒大家:爬虫写的好,牢饭吃的饱!!
结语:其实爬虫的基本原理就这些,听着也很简单,这次就是讲一下爬虫到底是什么,暂时先不讲什么python、urlrequest、urlopen、open、request、get、urlparse、bs4、第三方库requests、超时响应等等等等···(其实是懒得写了),等以后慢慢写,其实详细写的话还是不少的。
今天的爬虫完全是初识!初识!没有谈技术,只是讲讲爬虫是什么,基本原理基本流程巴拉巴拉,至于技术代码,常用内置库、第三方库,参数拼接等等啥的等下次想写再写吧!
希望没了解过的人看完这篇都能大概理解爬虫是什么~
回见!