本文基于各个大佬的文章
目录
前言
暑假在家闲来无事,网上冲浪刷到了爬虫教程,目前正在学习中。本文即记录所学内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、URI 和 URL
URI 的全称为 Uniform Resource Identifier,即统一资源标志符,URL 的全称为 Universal Resource Locator,即统一资源定位符。
URL 是 URI 的子集,也就是说每个 URL 都是 URI,但不是每个 URI 都是 URL。URI 还包括一个子类叫作 URN,它的全称为 Universal Resource Name,即统一资源名称。
我们通常俗称的网址,如https://www.csdn.net,它是一个URL。
二、HTTP 和 HTTPS
例如上述URL,https://www.csdn.net,它的开头会有http或者https,这个就是访问资源所需的协议类型,有时我们还会看到ftp、smb、sftp开头的URL。在爬虫中,我们抓取的页面通常就是 http 或 https 协议的。
1.HTTP
HTTP 的全称是 Hyper Text Transfer Protocol,中文名叫作超文本传输协议,HTTP 协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网的数据通信的基础。
2.HTTPS
HTTPS 的全称是 Hyper Text Transfer Protocol over Secure Socket Layer,它是HTTP协议与SSL协议的结合,即在HTTP下加入SSL层,以提供安全的通信通道。通过使用HTTPS,网站可以实现数据的加密传输,保护用户的隐私信息,如信用卡号、ID、电子邮件地址和密码等敏感信息在传输过程中的安全。
HTTPS 的安全基础是 SSL,通过它传输的内容都是经过 SSL 加密的,它的主要作用可以分为以下两种:
- 建立信息安全通道,来保证数据传输的安全。
- 确认网站的真实性,凡是使用了 HTTPS 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询。
现在越来越多的网站和 App 都已经向 HTTPS 方向发展。
3.HTTP请求过程
我们在浏览器中输入一个URL,回车或者点击搜索之后便可以在浏览器中观察到页面内容。实际上,这个过程是浏览器向网站所在的服务器发送了一个请求,网站服务器接收到这个请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器。响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来,传输模型如图所示。
我们打开百度浏览器,按Fn+F12或者右击选择“检查”项,即可打开开发者工具,点击网络(network),出现如下情况
在网址栏敲一下回车,即可获得网页信息。
三、请求
请求是由客户端向服务端发出的,主要分为 4 部分内容:请求方法(Request Method)、请求的网址(Request URL)、请求头(Request Headers)、请求体(Request Body)。
以请求百度浏览器为例。
1.请求方法(Request Method)
常见的请求方法有两种:GET和 POST,另外还有一些请求方法,如 HEAD、PUT、DELETE、OPTIONS、CONNECT、TRACE 等。
GET 和 POST 请求方法有如下区别。
- 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
- GET 请求提交的数据最多只有 1024 字节,而 POST 请求没有限制。
从上图可知,请求方式为GET。
2.请求的网址(Request URL)
请求的网址即请求URL,由图可得。
3.请求头(Request Headers)
请求头,用来说明服务器要使用的附加信息,比较重要的信息有 Cookie、Referer、User-Agent 等。下面简要说明一些常用的头信息。
- Accept:请求报头域,用于指定客户端可接受哪些类型的信息。
- Accept-Language:指定客户端可接受的语言类型。
- Accept-Encoding:指定客户端可接受的内容编码。
- Host:用于指定请求资源的主机 IP 和端口号,其内容为请求 URL 的原始服务器或网关的位置。从 HTTP 1.1 版本开始,请求必须包含此内容。
- Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。
- Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
- User-Agent:简称 UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。
- Content-Type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,在 HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。
4.请求体(Request Body)
请求体一般承载的内容是 POST 请求中的表单数据,而对于 GET 请求,请求体则为空。
四、响应
响应,由服务端返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。
1.响应状态码(Response Status Code)
响应状态码表示服务器的响应状态,如常见的404代表页面未找到。下表列出了常见的错误代码及错误原因。
2.响应头(Response Headers)
响应头包含了服务器对请求的应答信息,如 Content-Type、Server、Set-Cookie 等。
- Date:标识响应产生的时间。
- Last-Modified:指定资源的最后修改时间。
- Content-Encoding:指定响应内容的编码。
- Server:包含服务器的信息,比如名称、版本号等。
- Content-Type:文档类型,指定返回的数据类型是什么。如 text/html 代表返回 HTML 文档,application/x-javascript 则代表返回 JavaScript 文件,image/jpeg 则代表返回图片。
- Set-Cookie:设置 Cookies。
- Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。
3.响应体(Response Body)
响应的正文数据都在响应体中,我们爬取的内容也在这里面。