【python】爬虫基础:爬虫用途、爬虫基本原理以及HTTP 基
初识爬虫
【👀 简介】:网络爬虫,是一种按照一定的规则,自动地抓取万维网信息(数据)的程序或者脚本。 --摘自【百度百科】
【🍀通俗的说】:网络爬虫就是一个程序,通过模拟人类访问互联网的形式,不停地从网络上抓取我们需要的数据。我们可以定制各种各样的爬虫,来满足不同的需求,如果法律允许,我们可以采集在网页上看到的、任何你想要获得的数据。
【好吧,一句话来讲】:根据用户的需要,从网上抓取数据。(不需要用户去操纵浏览器获取)
🐾爬虫用途
【背景】:我们当前正处于人工智能和大数据时代,爬虫除了能够获取互联网的数据以外还能够帮我们完成很多繁琐的手动操作,这些操作不仅仅包括获取数据,还能够添加数据。用途有以下几种:
🏛:聚合服务(去哪儿网,美团 )
🌰:管理多个平台的多个账户(如各个电商平台的账号)
🌰:微信聊天机器人
🌰:新闻推荐(今日头条)
💗:垂直领域的服务(💗💗大众点评)
🌰:预测和判断(医疗领域)
🚝:抢票神器(🚝学会爬虫,永远不为出行担忧~)
🌰:投票神器(利用爬虫刷票等等)
🐾 爬虫基本原理
【介绍】:爬虫模拟用户在浏览器或者App应用上的操作,把操作的过程、实现自动化的程序。
步骤如下:
-
查找域名对应的IP地址。
-
向IP对应的服务器发送请求。
-
服务器响应请求,发回网页内容。
-
浏览器显示网页内容。
流程
🐾HTTP 基本原理
既然已经了解了爬虫是不停地从网络上抓取我们需要的数据。那么我们就应该明白网络以及数据传输等方面的知识,下面,将挑重点介绍。
URI(Uniform Resource Identifier)
统一资源定位符,用来唯一指定网络上的一个资源。
HTTP 和 HTTPS
🙈HTTP 超文本传输协议
【介绍】:超文本传输协议,用于从网络传输超文本数据的协议,它能够保证高效而准确的传输超文本文档,目前广泛使用的是HTTP1.1版本。
😺HTTPD协议
【介绍】:是HTTP协议的安全版本。在HTTP下加入SSL层,简称为HTTPS。HTTPS的安全基础是SSL,通过它的传输内容都会经过SSL加密。主要功能有以下两点:
- 建立一个安全通道来保证数据传输的安全。
- 确认网站的真实性。因为需要CA机构颁发CA证数。
🐾HTTP请求过程
HTTP请求,由客户端向服务器端发出,主要是以下四个部分:
- 请求方法(Request Method)
- 请求的网址(Request URL)
- 请求头(Request Header)
- 请求体(Request Body)
请求方法介绍
请求方法重点掌握“增”、“删”、“改”、“查”
方法🐾 | 描述 |
---|---|
GET | 请求页面,返回页面内容。是向服务器要数据的。 |
HEAD | 类似GET请求,只是返回的只有Header中的内容。 |
POST | 用于向服务器发送数据 |
PUT | 用于对服务器的数据进行修改 |
DELETE | 删除服务器上指定内容 |
CONNECT | 将服务器作为跳板,访问其他服务器页面 |
OPTIONS | 请求web服务器告知其支持的各种功能 |
🐾请求头
请求头里存放了服务器使用的附加信息,例如Cookie、User-Agent等。常见信息见下表:
请求头 | 作用 |
---|---|
Accept: | 请求报头域,用于指定客户端可以接收哪些类型的信息。 |
Accept-Lanaguage: | 客户端可以接收的语言类型。 |
Accept-Encoding: | 指定客户端可接受的内容编码。 |
Host: | 指定请求资源的主机IP和端口号。 |
Cookie: | 存储在本地的数据。维持当前访问会话。 |
Referer: | 用来标识请求是从哪个页面发过来的。 |
User-Agent: | 用来使服务器端识别客户端使用的操作系统、浏览器等。 |
Content-Type: | 表示请求中的媒体类型信息。常见的content-type类型如下表 |
请求体
【一般情况】使用post来请求数据;对于get请求,请求体为空。
【注意】:Get请求每次提交的数据,最多只能有1024字节。
Content-Type 和 POST 提交数据方式的关系,如下表。
content-type类型 | 提交数据的方式 |
---|---|
application/x-www-form-urlencoded | 表单数据 |
multipart/form-data | 文件上传 |
application/json | 序列化的JSON数据 |
text/xml | xml数据。 |
【注释】:在爬虫应用中,如果要构造 POST 请求,需要使用正确的 Content-Type,并了解各种请求库的各个参数设置时使用的是哪种 Content-Type, 不然可能会导致 POST 提交后无法正常响应。
🐾响应
响应由服务器端返回给客户端,分为三个部分:响应状态码、响应头、响应体。
响应状态码
【解释】:代表服务器处理请求的状态。具体可见下表:
响应状态码 | 状态 | 详解 |
---|---|---|
200 | OK(成功) | 请求成功 |
201 | Created(已创建) | 请求成功,并且创建了一个新资源 |
202 | Accepted(已接受) | 请求已经收到,但仍在处理中,将异步处理 |
204 | No Content(没有内容) | 请求成功处理,但是返回响应没有数据 |
400 | Bad Request(坏请求) | 请求无效或不一致 |
401 | Unauthorized(未授权) | 请求中未包含身份验证信息或提供的凭据无效 |
403 | Forbidden(禁止) | 在请求中发送的身份验证凭据,无权访问目标 |
404 | Not Found(未找到) | URL对应的资源不存在 |
405 | Method Not Allowed(不允许使用的方法) | 指定资源不支持请求使用的方法 |
500 | Internal Server Error(内部服务器错误) | 处理请求的过程中,发生了意外错误 |
【补充】:通常情况下,2xx:表示成功;3xx:表示重定向;4xx:表示客户端错误;5xx:表示服务器错误。具体关于响应状态码可参考:https://www.cnblogs.com/fwl8888/p/9388414.html
🐾 响应头
【解释】:包含了服务器对请求的响应信息。
- Date:响应产生的时间
- Last-Modified: 指定资源的最后修改时间。
- Content-Encoding:指定响应内容的编码。
- Server:包含的服务器信息。
- Content-Type:返回的文档类型。
- Set-Cookie:设置cookie。告诉浏览器要将此信息存储在cookie中。
- Expires:设置响应的过期时间。可以使浏览器将内容存放在缓存中。
🐾 响应体
响应的正文数据都存储于响应体中,Preview下的内容即为响应体的内容。
爬虫基础--响应体
【技能提高】:通过爬虫爬取响应体,得到网页的源代码、 JSON数据等, 然后从中做相应内容的提取。