在开始学习爬虫之前,我们有必要详细了解一些概念的基本原理,这对于我们学习爬虫有很大的帮助!
一、URL
在WWW上,每一个信息资源都有统一的且在网上的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。
二、HTTP 和 HTTPS
HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是用于在客户端和服务器之间传输数据的协议。
- HTTP是一种在计算机之间传输超文本的协议。它使用的是明文传输,即数据在传输过程中不加密。HTTP通常在Web浏览器和服务器之间传输网页、图片、视频等资源。
- HTTPS是对HTTP的安全扩展,它使用安全套接字层(SSL)或传输层安全(TLS)协议进行数据加密和身份验证。通过使用加密技术,HTTPS协议可以保护消息的完整性和机密性,防止信息被窃听和篡改。HTTPS常用于保护敏感信息的传输,例如用户登录凭证、信用卡信息等。
区别在于,HTTP是不安全的,数据传输过程中容易被第三方窃听和篡改;而HTTPS通过加密和身份验证确保了数据的安全性和可信性。
三、HTTP 状态码
状态码是爬虫中的一项重要指标,通过状态码,我们可以了解到爬虫目前运行的一些基本情况,我们列举几个比较重要的状态码:
- 200:表示请求成功,你可以继续处理服务器返回的数据。
- 301:表示请求的资源已经永久移动到新的URL,你需要更新你的爬虫代码以获取新的 URL 来使用。
- 304:表示客户端有缓存的文档并发出了一个条件性的请求,服务器告诉客户端,原来缓存的文档还可以继续使用,没必要再重新加载了。
- 400:表示请求有语法错误,服务器无法理解,你需要检查请求的参数和格式是否正确。
- 403:表示请求被服务器拒绝,可能是没有权限访问该资源,或者访问被限制,一般是爬虫被发现,你需要给代码添加一些反反爬虫手段。
- 404:表示请求的资源不存在,你需要检查请求的URL是否正确,或者服务器上是否存在该资源。
- 418:表示服务器认为你的请求是一个爬虫,而不是一个正常的用户请求。
- 500:表示服务器内部错误,这可能是服务器端代码出现了问题,你可以稍后再试,或者联系服务器管理员。
- 503:表示服务器暂时无法处理请求,通常是由于服务器过载或维护,你可以稍后再试,或者尝试减少请求频率。
四、GET 和 POST
GET 和 POST 都是 HTTP 的请求方法,这两种方法在日常开发中很常用,我们来详细聊聊它们的异同点。
-
相同点
GET 请求和 POST 请求底层都是基于 TCP/IP 协议实现的,使用二者中的任意一个,都可以实现客户端和服务器端的双向交互。
-
不同点
-
约束和规范
对于 GET 来说,它是用来获取数据的,所以仅仅是从网页获取数据,使用 GET 就是 OK 的;
对于 POST 来说,主要是用来传递实体的,例如登录操作,要通过 POST 将用户的账号密码传递到服务器。 -
缓存
GET请求会被浏览器主动缓存,比如常见的CSS,JS,HTML请求都会被缓存,如果下次传输的数据相同,那么他们就会返回缓存中的内容,以求更快的展示所需要的数据;
POST请求默认不会进行缓存。 -
效率
GET 产生一个 TCP 数据包,而 POST 产生 2 个 TCP 数据包。
对于GET请求来说,浏览器发送请求,会把http header和data一并发送出去,服务器做出相应200ok。而对于POST而言,浏览器会先发送header,服务器响应100continue,再发送data,服务器再做出响应200ok。因此POST在时间上会消耗比GET要大。当然,并不是所有的浏览器POST都会发送2次包,Firefox就只发送一次。 -
参数长度限制
由于GET请求的参数通过url来传递的,而url的长度是有限制的,根据不同的浏览器以及不同的浏览器版本,他们大小的限制也是不同的。对于POST请求来说,参数存放在request body中,它没有大小限制。
-
回退和刷新
GET 请求可以直接进行回退和刷新,不会对用户和程序产生任何影响;而 POST 请求如果直接回滚和刷新将会把数据再次提交。
-
五、Cookie
Cookie,有时也用其复数形式 Cookies,它是一个小型的文本文件,是网站为了辨别用户身份、进行 Session 跟踪而临时或永久存储在用户本地上的数据。
Cookie 由一个名称(Name)、一个值(Value)和其它几个用于控制 Cookie 有效期、安全性、使用范围的可选属性组成。其中:
- Name/Value:设置 Cookie 的名称及相对应的值,对于认证 Cookie,Value 值包括Web服务器所提供的访问令牌。
- Expires 属性:设置 Cookie 的生存期。有两种存储类型的 Cookie:会话性与持久性。
- Expires 属性缺省时,为会话性 Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;
- 持久性 Cookie 会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效。
- Path 属性:定义了 Web 站点上可以访问该 Cookie 的目录。
- Secure 属性:指定是否使用 HTTPS 安全协议发送Cookie。使用HTTPS安全协议,可以保护Cookie在浏览器和Web服务器间的传输过程中不被窃取和篡改。
- HTTPOnly 属性:这是一种保护 Cookie 的方法,如果 Cookie 中存在这个属性,这个属性就是告诉浏览器这个cookie是不允许其他网站或程序读取的,这就防范了跨站脚本攻击(XSS攻击)。
- Domain 属性:指定了可以访问该 Cookie 的 Web 站点或域。