宁波建网站选哪家好点,模板之家官网,wordpress 添加图片,注册网站卖东西网页请求的原理
网络爬虫请求网页的过程可以理解为用户使用浏览器加载网页的过程#xff0c;这个过程其实是向Web服务器发送请求的过程#xff0c;即浏览器向Web服务器发送请求#xff0c;Web服务器会将响应内容以网页形式返回给浏览器。因此#xff0c;了解浏览器与We…网页请求的原理
网络爬虫请求网页的过程可以理解为用户使用浏览器加载网页的过程这个过程其实是向Web服务器发送请求的过程即浏览器向Web服务器发送请求Web服务器会将响应内容以网页形式返回给浏览器。因此了解浏览器与Web服务器之间的通信方式和交互过程理解网页的组成、结构、分类、数据格式能加深对网络爬虫的理解。本章将针对网页请求原理的相关知识进行讲解。
1.浏览器加载网页的过程 1浏览器通过域名系统Domain Name SystemDNS服务器查找百度服务器对应的IP地址。
2浏览器向IP地址对应的Web服务器发送HTTP请求。
3Web服务器接收HTTP请求后进行处理向浏览器返回HTML页面。
4浏览器对HTML页面进行渲染呈现给用户。
2.HTTP基础
2.1URL介绍
URL全称Uniform Resource Locator又称URL地址表示统一资源定位符用于指定因特网上某个资源的位置。URL地址的语法格式如下:
scheme://[user]:[password]host:[port]/path;[params]?[query]#[frag]URL地址语法格式中各个选项的说明
选项说明scheme表示方案用于标识采用哪种传输协议访问服务器资源user表示用户用于标识访问服务器资源时需要的用户名password表示密码用户名后面可能要包含的密码两者之间以”:”分隔host表示主机地址也就是存放资源的服务器主机名或IP地址port表示端口号也就是存放资源的服务器监听的端口号path用于指定本次请求资源在服务器中的位置params表示访问资源时使用的协议参数参数之间以“;”分隔query表示查询字符串用于指定查询的资源一般使用“?”与URL的其余部分进行分隔。查询字符串没有通用格式它通常会以””连接多个参数每个参数的名称与值使用“”连接如https://www.baidu.com/?ieutf-8wdpythonfrag表示片段用于指定访问资源时某一部分资源的名称
(1)scheme选项用于规定如何访问指定资源的主要标识符它会告诉负责解析URL的应用程序应该使用什么传输协议。
传输协议说明示例File访问本地计算机的资源file:///Users/itcast/Desktop/basic.htmlFTP文件传输协议访问共享主机的文件资源ftp://ftp.baidu.com/moviesHTTP超文本传输协议访问远程网络资源http://bbs.itheima.com/template/gfquan/src/logo.pngHTTPS安全的SSL加密传输协议访问远程网络资源https://image.baidu.com/channel/wallpaperMailto访问电子邮件地址mailto:nullitcast.cn
(2)host指存放资源的主机名或者IP地址它用于标识互联网上的唯一一台计算机保证用户在联网的计算机上可以高效地从成千上万台计算机中找到这台计算机。IP地址分为IPv4互联网通信协议第4版和IPv6互联网协议第6版目前较通用的IP地址是IPv4它通常“点分十进制”表示成“a.b.c.d”的形式并通过DNS服务将域名和IP地址相互映射比如.baidu.com就是202.108.22.5对应的域名。
(3**)port用于标识在一台计算机上运行的不同程序它与主机地址以“:”进行分隔**。每个网络程序都对应一个或多个特定的端口号例如采用HTTP协议的程序默认使用的端口号为80采用HTTPS协议的程序默认使用的端口号为443。
(4)path是由0个或多个“/”符号隔开的字符串一般用于指定本次请求的资源在服务器中的位置。 2.2.HTTP和HTTPS
对于网络爬虫来说它采集的页面通常使用的是HTTP协议和HTTPS协议。
HTTP协议全称为超文本传输协议Hyper Text Transfer Protocol它用于将Web服务器的超文本资源传送到浏览器中。
HTTP协议能够高效、准确地传送超文本资源但浏览器与Web服务器的连接是一种一次性连接它限制每次连接只能处理一个请求。这意味着每个请求都是独立的服务器返回本次请求的应答后便立即关闭连接下次请求再重新建立连接。
HTTPS协议全称为超文本传输安全协议Hyper Text Transfer Protocol Secure该协议在HTTP协议基础上添加了安全套接字协议Secure Sockets LayerSSL数据在传输过程中主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密实现互联网传输安全保护。
2.3HTTP请求格式
浏览器向Web服务器发送的信息是一个HTTP请求每个HTTP请求由请求行、请求头部、空行以及**请求数据**有的也称为请求体这4个部分组成。 (1)请求行的内容具体如下。
GET /item/Python/407313 HTTP/1.1在请求行中GET表示向服务器请求网络资源时所使用的请求方法/item/Python/407313表示请求的URL地址HTTP/1.1表示使用的HTTP版本。
常用的请求方法包括GET和POST其中GET用于请求服务器发送某个资源POST用于向服务器提交表单或上传文件表单数据或文件的数据会包含在请求体中。请求方法GET和POST的区别主要体现两个方面。 (2)请求头
请求行紧挨的部分就是若干个请求头信息请求头主要用于说明服务器要使用的附加信息。
Host:用于指定被请求资源的服务器主机名和端口号。
User-Agent用于标识客户端身份通常页面会根据不同的User-Agent信息自动做出适配甚至返回不同的响应内容。
Accept:用于指定浏览器或其他客户端可以接受的MIME文件类型服务器可以根据该字段判断并返回适当的文件格式。
Referer:用于标识当前请求页面的来源页面地址即表示当前页面是通过此来源页面里的链接进入的。
Accept-Charset:用于指定浏览器可以接受的字符集类型。
Cookie:用于在浏览器中寄存的小型数据体它可以记载和服务器相关的用户信息也可以用来实现模拟登录。
Content-Type:用于指出实体内容的MIME类型。
2.4HTTP响应格式
Web服务器发送给浏览器的响应信息由4个部分组成分别是状态行、响应头、空行、以及响应正文。 状态行的内容具体如下。
HTTP/1.1 200 OK在状态行中HTTP/1.1表示HTTP协议的版本号200表示响应状态码OK表示响应状态码的简短描述。
响应状态码代表服务器的响应状态它的作用是告知浏览器请求Web资源的结果如请求成功、请求异常、服务器处理错误等。
响应状态码说明100~199表示服务器成功接收部分请求要求浏览器继续提交剩余请求才能完成整个处理过程200~299表示服务器成功接收请求并已完成整个处理过程。常见状态码为200表示Web服务器成功处理了请求300~399表示未完成请求要求浏览器进一步细化请求。常见的状态码有302表示请求的页面临时转移至新地址、307表示请求的资源临时从其他位置响应和304表示使用缓存资源400~499表示浏览器发送了错误的请求常见的状态码有404表示服务器无法找到被请求的页面和403表示服务器拒绝访问权限不够500~599表示Web服务器出现错误常见的状态码为500表示本次请求未完成原因在于服务器遇到不可预知的情况
状态行下面的部分便是若干个响应头信息关于响应头中的常用字段以及常用值的介绍如下。 响应正文是服务器返回的具体数据常见的数据是HTML源代码。浏览器在接收到HTTP响应后会根据响应正文的不同类型进行不同的处理。如果响应正文是DOC文档这时浏览器会借助安装在本机的Word程序打开这份文档如果响应正文是RAR压缩文档这时浏览器会弹出一个下载窗口让用户下载解压软件如果响应正文是HTML文档这时浏览器会在自身的窗口中展示该文档。
会根据响应正文的不同类型进行不同的处理。如果响应正文是DOC文档这时浏览器会借助安装在本机的Word程序打开这份文档如果响应正文是RAR压缩文档这时浏览器会弹出一个下载窗口让用户下载解压软件如果响应正文是HTML文档这时浏览器会在自身的窗口中展示该文档。