| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 爬 虫 基 础 -> 正文阅读 |
|
[网络协议]爬 虫 基 础 |
目录 超文本:英文名称hypertext,简单来说HTML代码就是超文本,而我们看到的网页就是超文本解析而成。 由服务器返回给客户端,分为三部分:响应状态码,响应头,响应体。 响应状态码:表示服务器的响应状态,200表示服务器响应正常,404代表页面未找到。 响应体:响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码,如下图。 网页可以分为三大部分:HTML、CSS、JavaScript 爬虫概述:简单来说,爬虫就是获取网页并提取和保存信息的自动化程序。 http基本原理:Uri:全称为“Uniform Resource Identifier”,即统一资源标识符。 Url:全称为“Universal Resource Locator”,即统一资源定位符。 通俗的来讲url就是uri,而uri包括了url和urn,目前我们常见的都是url。 例如: “https://www.baidu.com/?tn=02003390_79_hao_pg” 这就是一个url。 一个完整的url包括三部分: 第一部分是协议(或称为服务方式); 第二部分是存有该资源的主机IP地址(有时也包括端口号),简单来说就是网址; 第三部分是主机资源的具体地址,如目录和文件名等,简单来说就是文件地址。 第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略 下面详细地介绍url的3个部分: 第一部分:协议 淘宝的url:https://www.taobao.com/ 百度的url:百度一下,你就知道百度一下,你就知道https://www.baidu.com/ 可以看到无论是百度还是淘宝他们的url第一部分都是https,意味它们都遵循https协议,目前常见的协议类型有http、https。 HTTP的全称是Hyper Text Transfer Protocol,中文名叫超文本传输协议。 HTTP协议主要作用: HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,能保证高效而准确的传送超文本文档,简单来说就是可以辅助浏览器与服务器之间的传输数据,当你用浏览器打开一个网页,首先是客户端向服务器发送请求,而服务器返回“响应”(简单来说就是你所看到的网页内容),而协议就是在这个过程中起辅助作用。 第二部分:网址 网址部分大家也经常用到,比如:www.baidu.com, www.taobao.com。这都是网址,当我们在地址栏输入一个网址的时候,协议部分是不用输入的,浏览器会自动补上默认的HTTP协议。 对于www.taobao.com这个网址,如果我们去掉前缀www,即taobao.com,这个部分就叫域名,而域名最右边的com就是顶级域名,常见的比如:.com 表示商业机构,.org表示非盈利性组织,.gov表示政府机构,.edu表示教育及科研机构。用来表示国家顶级域名的比如:.cn表示中国,.us表示美国,.jp表示日本。虽然一个标准的URL地址看起来很复杂,但其实我们在输入URL的时候是只要输入网址或域名就可以了。 至于第三部分就不再赘述。 注意:百度一下,你就知道https://www.baidu.com/?tn=02003390_79_hao_pg 该URL最后一部分?tn=02003390_79_hao_pg 并非资源的具体地址,而是请求的参数。在该URL中的第三部分被省略了。 超文本:英文名称hypertext,简单来说HTML代码就是超文本,而我们看到的网页就是超文本解析而成。例如: 这些都叫做超文本。 HTTP请求过程我们在浏览器中输入一个URL,回车之后就能看到网页内容,这个过程实际上是浏览器向该网站所在的服务器发送了一个请求,服务器接受请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器,响应里包含页面源码等内容,浏览器再经过解析,我们便能看到内容。 请求:请求由客户端向服务器发出,分为四部分:请求方法,请求网址,请求头,请求体。 请求方法: 常见的分为两种:GET和POST。 GET: 我们在浏览器中直接输入URL并回车,便发起了一个GET请求,请求参数便包含在内。 例如:百度一下,你就知道https://www.baidu.com/?tn=02003390_79_hao_pg 最后一个‘/’后的内容便是参数。 POST: 大多在表单提交时发起,比如,对于一个需要登录账号密码的网站,即登录表单,你需要输入账号和密码,这时就会发送一个POST请求,而POST与GET区别在于POST请求参数不会出现在URL中,这也就是为什么需要登录的请求都采用POST方式,如果用GET方式,那么用户的账号密码都会暴露在URL中。 请求网址: 百度一下,你就知道https://www.baidu.com/?tn=02003390_79_hao_pg 在这个URL中请求网址就是www.baidu.com 请求头: 用来说明服务器要使用的附加信息,就是服务器所需要的东西。 比较重要的有Cookie,Referer,User-Agent。 Referer:用来标识这个请求是从哪一个页面发过来的,服务器可以拿这一信息用于防盗链处理(一种反爬方式)。 User-Agent:可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息,做爬虫时加上此信息,可以将爬虫伪装成浏览器,以防止反爬。 请求头是请求的重要组成部分,在写爬虫时,通常要设定请求头。 请求体: 请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体则为空。 响应由服务器返回给客户端,分为三部分:响应状态码,响应头,响应体。响应状态码:表示服务器的响应状态,200表示服务器响应正常,404代表页面未找到。响应头:包含服务器对请求的应答信息。?响应体:响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码,如下图。请求一张图片时,它的响应体就是图片的二进制数据,我们做爬虫请求网页时,要解析的内容就是响应体。? 网页基础网页可以分为三大部分:HTML、CSS、JavaScriptHTML就是一种用来描述网页的语言,全称叫做Hyper Text Markup Language,即超文本标记语言。 CSS全称叫做Cascading Style Sheets,即层叠样式表,用来让页面变得更美观。 JavaScript是一种脚本语言,我们在网页里看到的动画、交互效果,如轮播图、进度条就是JavaScript在起作用。 爬虫概述:简单来说,爬虫就是获取网页并提取和保存信息的自动化程序。会话和cookies首先先介绍HTTP的一个特点叫做无状态,无状态是指服务器不知道客户端是什么状态,每个请求和响应都是独立的,缺少状态记录。 举个简单的例子,比如你登录一个购物平台,你首先输入了你的账号密码,然后由浏览器向服务器发送请求,服务器核对你的账户密码,返回响应,之后你点开一个商品,相当于又发起了一个url请求,但由于HTTP是无状态的,也就是说服务器并不知道是你再次发送的请求,因为请求之间是相互独立的,这时服务器需要再次核对你的身份信息,也就是你的账号密码,因此你需要再次输入账号密码才能打开商品网页。因此便有了会话和cookie的诞生。 会话和cookie用于保持HTTP连接状态,会话在服务端,cookie在客户端。 当你第一次请求服务器时,服务器会返回一个带有cookie的响应,而下次你再访问服务器时,请求中都会包含这个cookie。 比如说,你登陆一个网站,输入你的账号密码,服务器返回一个带有cookie的响应,这个cookie相当于你登录的凭证,而同时在服务器一端也会有与cookie相对应的一个会话,会话储存用户的状态信息,当你在该网站中点开其他网页时,请求中包含了服务器发送给你的cookie,服务器通过cookie找到对应的会话,从而知道你的状态信息,而返回给你想要的响应(也就是网页内容)。 JavaScript渲染页面:有时候我们用requests抓取网页时,得到的源代码和浏览器中看到的不一样,可能是因为网页经过了JS渲染,而我们得到的原始HTML并不能得到真正的网页。所谓JS渲染就是在HTML代码中引入了JS文件,浏览器在识别到HTML中的JS文件会向服务器发送请求,得到了文件后就会执行其中的JS代码,最后就能得到完整的页面。而我们用爬虫爬取的HTML代码并不能加载出JS文件,所以我们就看不到完整的页面内容。 代理代理实际上就是代理服务器,英文叫做proxy server,就是其他计算机的IP地址,再简单一点就是一个中转站。正常请求一个网站时,我们发送请求给服务器,服务器返回响应给我们。当使用代理时,就是我们发送请求给代理服务器,代理服务器发送给Web服务器,之后返回响应给代理,代理再给我们。当我们用爬虫爬取网页时,可能会因为访问次数过多,被服务器认定为恶意访问,从而被封IP,也就是进了服务器的黑名单,当你想要再次访问时就会失败,而代理的作用就是用来防止服务器封你主机的IP,从而达到隐藏的效果。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:51:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |