Loading... # 认识爬虫 --- ## 一、什么是爬虫 * 网络爬虫(又称为网页蜘蛛,网络机器人,或者网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本 * 大家可以理解为在网络上爬行的一只蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到资源,那么它就会抓取下来。 --- ## 二、爬虫抓取过程 * 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 [http://image.baidu.com](http://image.baidu.com) ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过 DNS 服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML、JS、CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了。 * 因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片、文字等资源的获取。 --- ## 三、`URL` 相关知识 * 爬虫爬取数据时必须要有一个目标的 `URL` 才可以获取数据,它是爬虫获取数据的基本依据。 > [https://www.php.cn/course/1086.html](https://www.php.cn/course/1086.html) * 完整的 URL 包括以下几部分: * scheme 协议部分:该 URL 的协议部分为`https:`,这代表网页使用的是 HTTPS 协议。 * host 域名部分:该 URL 的域名部分为`www.php.cn` 也可以使用 IP 地址 * port 端口部分:跟在域名后面的是端口。默认为 80 端口,端口可以更改,如果是默认端口,不在`URL`上显示 * path 路径:服务器上资源的路径,`course/1086.html` * parameters 参数:用于指定特殊参数的可选项 ### 1、什么是 `HTTP` * 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信 * `HTTP` 的工作方式是客户机与服务器之间的请求-应答协议 ### 2、什么是 `HTTPS` * `HTTPS` 是身披 `SSL` 外壳的 `HTTP` * `HTTPS` 是一种通过计算机网络进行安全通信的传输协议,经由 `HTTP` 进行通信,利用 `SSL/TLS` 建立全信道,加密数据包 * `HTTPS` 使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性 > 备:TLS 是传输层加密协议,前身是 SSL 协议,由网景公司 1995 年发布,有时候两者不区分 ### 3、请求方式 | **编号** | **类型** | **说明** | | ---------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | 1 | GET | 请求指定的页面信息,并返回实体主体。 | | 2 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 | | 3 | HEAD | 类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头。 | | 4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 | | 5 | DELETE | 请求服务器删除指定的页面。 | | 6 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 | | 7 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 | | 8 | OPTIONS | 允许客户端查看服务器的性能。 | ### 4、`GET` 请求 * GET 请求可被缓存 * GET 请求保留在浏览器历史记录中 * GET 请求可被收藏为书签 * GET 请求不应在处理敏感数据时使用 * GET 请求有长度限制 * GET 请求只应当用于取回数据 ### 5、`POST` 请求 * POST 请求不会被缓存 * POST 请求不会保留在浏览器历史记录中 * POST 不能被收藏为书签 * POST 请求对数据长度没有要求 ### 6、状态码 | **编号** | **状态码** | **说明** | | ---------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 1 | 100 | 继续 客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。 | | 2 | 101 | 转换协议 在发送完这个响应最后的空行后,服务器将会切换到在 Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。 | | 3 | 102 | 继续处理 由 WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。 | | 4 | 200 | 请求成功 处理方式:获得响应的内容,进行处理 | | 5 | 201 | 请求完成,结果是创建了新资源。新创建资源的 URI 可在响应的实体中得到 处理方式:爬虫中不会遇到 | | 6 | 202 | 请求被接受,但处理尚未完成 处理方式:阻塞等待 | | 7 | 204 | 服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。 处理方式:丢弃 | | 8 | 300 | 该状态码不被 HTTP/1.0 的应用程序直接使用, 只是作为 3XX 类型回应的默认解释。存在多个可用的被请求资源。 处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃 | | 9 | 301 | 请求到的资源都会分配一个永久的 URL,这样就可以在将来通过该 URL 来访问此资源 处理方式:重定向到分配的 URL | | 10 | 302 | 请求到的资源在一个不同的 URL 处临时保存 处理方式:重定向到临时的 URL | | 11 | 304 | 请求的资源未更新 处理方式:丢弃 | | 12 | 400 | 非法请求 处理方式:丢弃 | | 13 | 401 | 未授权 处理方式:丢弃 | | 14 | 403 | 禁止 处理方式:丢弃 | | 15 | 404 | 没有找到 处理方式:丢弃 | | 16 | 500 | 服务器内部错误 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。 | | 17 | 501 | 服务器无法识别 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。 | | 18 | 502 | 错误网关 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 | | 19 | 503 | 服务出错 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。 | Last modification:January 15, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏