当前位置: 首页 > article >正文

Python 爬虫(2)Web请求

文章目录

  • 一、Web 请求
    • 1、Web请求的基本组成部分
    • 2、Web请求的工作流程
    • 3、常见的Web请求协议和技术
    • 4、页面渲染方式
      • 4.1、客户端渲染(CSR)
      • 4.2、服务端渲染(SSR)
    • 5、静态网页与动态网页
      • 5.1、静态网页
      • 5.2、动态网页

前言:

Web请求是互联网通信的基础,它允许客户端(如浏览器)与服务器之间进行数据交换。理解Web请求的原理对于开发Web应用、优化性能以及解决网络问题至关重要。本文将详细介绍Web请求的基本原理,包括其组成部分、工作流程以及常见的协议和技术。

一、Web 请求

1、Web请求的基本组成部分

一个典型的Web请求由以下几个部分组成:

  • 客户端(Client):通常是浏览器,也可以是其他应用程序,负责发起请求并接收响应。
  • 服务器(Server):接收客户端的请求,处理并返回相应的数据或资源。
  • 请求(Request):客户端向服务器发送的请求消息,包含请求方法、URL、头部信息和请求体。
  • 响应(Response):服务器返回给客户端的消息,包含状态码、头部信息和响应体。

2、Web请求的工作流程

Web请求的工作流程可以分为以下几个步骤:

  1. DNS解析:当用户在浏览器中输入URL时,浏览器首先需要将域名解析为IP地址。这个过程称为DNS解析。浏览器会查询本地DNS缓存,如果没有找到,则会向DNS服务器发送请求,获取目标服务器的IP地址。

  2. 建立TCP连接:获取到服务器的IP地址后,浏览器会通过TCP协议与服务器建立连接。TCP是一种可靠的传输协议,确保数据在传输过程中不会丢失或损坏。通常,Web请求使用HTTP协议,而HTTP协议默认使用TCP的80端口(HTTPS使用443端口)。

  3. 发送HTTP请求:TCP连接建立后,浏览器会向服务器发送HTTP请求。HTTP请求由请求行、请求头和请求体组成。请求行包含请求方法(如GET、POST)、请求的URL和HTTP版本。请求头包含一些附加信息,如用户代理、接受的内容类型等。请求体通常用于POST请求,包含发送给服务器的数据。

  4. 服务器处理请求:服务器接收到请求后,会根据请求的内容进行处理。这可能包括查询数据库、执行服务器端脚本、读取文件等操作。服务器处理完请求后,会生成一个HTTP响应。

  5. 返回HTTP响应:服务器将生成的HTTP响应发送回客户端。HTTP响应由状态行、响应头和响应体组成。状态行包含HTTP版本、状态码(如200表示成功,404表示未找到)和状态消息。响应头包含一些元信息,如内容类型、内容长度等。响应体包含实际返回的数据,如HTML页面、JSON数据等。

  6. 浏览器渲染页面:浏览器接收到HTTP响应后,会根据响应内容进行页面渲染。如果响应是HTML文档,浏览器会解析HTML并加载其中的资源(如CSS、JavaScript、图片等),最终将页面呈现给用户。

  7. 关闭TCP连接:在HTTP/1.1中,默认情况下连接会保持打开状态,以便在同一连接上发送多个请求(称为持久连接)。但在某些情况下,连接会在请求完成后关闭。在HTTP/2中,连接可以复用,允许多个请求和响应同时进行。

3、常见的Web请求协议和技术

  • HTTP/HTTPS:HTTP(超文本传输协议)是Web请求的基础协议,定义了客户端和服务器之间的通信规则。HTTPS是HTTP的安全版本,通过SSL/TLS协议对数据进行加密,确保数据传输的安全性。

  • RESTful API:REST(表述性状态转移)是一种基于HTTP协议的Web服务架构风格。RESTful API使用HTTP方法(如GET、POST、PUT、DELETE)来操作资源,通常返回JSON或XML格式的数据。

  • WebSocket:WebSocket是一种全双工通信协议,允许客户端和服务器之间进行实时通信。与HTTP不同,WebSocket在建立连接后,客户端和服务器可以随时发送数据,而不需要每次都发起新的请求。

  • AJAX:AJAX(异步JavaScript和XML)是一种在不重新加载整个页面的情况下,通过JavaScript发起HTTP请求并更新部分页面的技术。AJAX通常用于创建动态、响应式的Web应用。

4、页面渲染方式

在Web开发中,客户端渲染(Client-Side Rendering,CSR)与服务端渲染(Server-Side Rendering,SSR)是两种重要的页面渲染方式,它们在实现方式和应用场景上各有特点。

4.1、客户端渲染(CSR)

  1. 工作原理
    • 获取初始页面:用户在浏览器输入URL发起请求,服务器返回一个包含基本HTML结构以及相关CSS和JavaScript文件链接的初始页面。这个初始页面往往只提供一个简单的容器,如<div id="app"></div>
    • 下载并执行脚本:浏览器下载并解析页面中引用的JavaScript文件,这些脚本通常来自于前端框架,如React、Vue等。
    • 数据请求与渲染:JavaScript代码在浏览器端执行,它会向服务器发送API请求,获取页面所需的数据。例如,一个展示用户列表的页面,JavaScript会请求服务器获取用户数据。获取到数据后,JavaScript通过操作DOM(文档对象模型),将数据动态地填充到HTML页面的相应位置,完成页面的渲染。比如将用户数据以列表形式展示在<ul>标签内。
  2. 优点
    • 交互性强:由于页面的渲染和交互逻辑都在客户端完成,能实现流畅的用户交互体验。例如,在单页面应用(SPA)中,用户切换页面时无需重新加载整个页面,通过JavaScript动态更新页面内容,过渡效果自然,操作流畅。
    • 减轻服务器压力:服务器只需提供静态文件和API接口,大部分的计算和渲染工作由客户端承担,降低了服务器的负载。对于高并发访问的应用,这一优势尤为明显。
    • 开发灵活:前端开发人员可以独立完成页面的开发和测试,与后端开发解耦,开发流程更加灵活,能够快速迭代前端功能。
  3. 缺点
    • 首屏加载慢:浏览器需要先下载JavaScript文件,然后执行脚本获取数据并进行渲染,这一过程会导致用户在初始加载页面时看到空白页面,等待时间较长,影响用户体验。特别是对于网络较差或设备性能较低的用户,首屏加载时间会更长。
    • 不利于SEO:搜索引擎爬虫通常只能获取到初始的HTML页面,无法执行JavaScript代码来获取动态生成的内容,导致页面内容难以被搜索引擎收录,不利于网站在搜索引擎中的排名和推广。
    • 对设备性能要求高:客户端需要执行大量JavaScript代码进行页面渲染和交互处理,对于性能较差的移动设备或老旧设备,可能会出现卡顿现象,影响用户使用。

4.2、服务端渲染(SSR)

  1. 工作原理
    • 接收请求:用户在浏览器发起页面请求,服务器接收到请求。
    • 数据获取与页面生成:服务器根据请求内容,从数据库或其他数据源获取所需数据。例如,一个新闻网站,服务器会根据用户请求的页面,获取相应的新闻文章数据。然后,服务器将获取到的数据填充到预先定义好的页面模板中,生成完整的HTML页面。比如将新闻标题、内容、作者等信息填充到新闻详情页的模板中。
    • 返回页面:服务器将生成好的HTML页面直接返回给浏览器,浏览器接收到完整的页面后,直接进行渲染展示给用户。
  2. 优点
    • 首屏加载快:用户能够快速看到完整的页面内容,因为服务器已经将页面渲染完成后返回,减少了等待时间,提升了用户体验,尤其是对于对加载速度敏感的用户群体。
    • 利于SEO:搜索引擎爬虫可以直接获取到完整的HTML页面内容,包括页面中的文字、图片等信息,便于搜索引擎对页面进行索引和收录,提高网站在搜索引擎中的排名,增加网站的曝光度。
    • 兼容性好:由于页面在服务器端已经渲染完成,不需要依赖客户端的JavaScript执行环境,对于不支持JavaScript或JavaScript执行环境较差的设备,也能正常显示页面内容。
  3. 缺点
    • 服务器压力大:服务器需要处理大量的页面渲染工作,包括数据获取和模板填充,这对服务器的计算资源和内存资源要求较高,增加了服务器的负载。在高并发场景下,可能需要配置高性能的服务器或进行集群部署来应对。
    • 开发和维护成本高:开发过程中需要同时关注前端和后端的代码逻辑,前后端的耦合度较高。例如,修改页面样式或布局可能需要同时调整前端模板和后端数据填充逻辑,增加了开发和维护的难度和工作量。
    • 响应速度受网络影响:页面的生成和返回依赖于服务器和客户端之间的网络连接,如果网络状况不佳,如网络延迟高或带宽不足,会影响页面的响应速度,导致用户等待时间变长。

5、静态网页与动态网页

在Web开发中,静态网页和动态网页是两种常见的网页类型。它们在内容生成、交互性、开发复杂度等方面有着显著的区别。

5.1、静态网页

  • 概念: 是指在服务器上预先创建好的HTML文件,内容固定不变,用户每次访问时服务器都会返回相同的HTML文件。静态网页通常由HTML、CSS和JavaScript组成,内容不会根据用户的不同请求而改变。
  • 工作流程:
    • 请求HTML文件:浏览器向服务器请求HTML文件。
    • 返回HTML文件:服务器查找并返回预先创建好的HTML文件。
    • 页面渲染:浏览器接收到HTML文件后,直接渲染页面内容,呈现给用户。
  • 使用场景:
    • 小型网站:如个人博客、企业官网等内容较少的网站。
    • 展示型页面:如产品展示页面、宣传页面等不需要频繁更新的页面。

5.2、动态网页

  • 概念:是指根据用户的不同请求,服务器动态生成HTML内容并返回给用户的网页。动态网页通常由服务器端脚本(如PHP、Python、Node.js等)生成,内容可以根据用户的不同请求、数据库查询结果等动态变化。
  • 工作流程:
    • 请求HTML文件:浏览器向服务器请求HTML文件。
    • 执行服务器端脚本:服务器根据请求的URL,执行相应的服务器端脚本(如查询数据库、调用API等)。
    • 生成HTML内容:服务器端脚本生成动态的HTML内容。
    • 返回HTML文件:服务器将生成的HTML文件发送给浏览器。
    • 页面渲染:浏览器接收到HTML文件后,直接渲染页面内容,呈现给用户。
  • 适用场景:
    • 大型网站:如电商平台、社交网络等需要频繁更新和个性化内容的网站。
    • 交互性强的应用:如在线工具、论坛等需要复杂用户交互的应用。

http://www.kler.cn/a/593443.html

相关文章:

  • [QT]深入理解Qt中的信号与槽机制
  • 20250319-Ragflow智能体框架实验
  • 远程连接的原理及步骤【清晰易懂】
  • Sqoop框架调研
  • MyBatis 中 resultType 的使用详解
  • 从0到1用cursor开发iOS应用(二)
  • SpringBoot第三站(4):配置嵌入式服务器使用外置的Servlet容器
  • MySQL 中利用 mysql.help_topic 实现行转列的深入剖析
  • YOLOv11有效涨点—以对某安防监控场景中的目标进行检测为例
  • 【Linux】进程间通信:system V共享内存
  • 解决 WSL1 Ubuntu 24.04 更新失败
  • Spring(6)——Spring、Spring Boot 与 Spring MVC 的关系与区别
  • ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)
  • 多模态系列——调研可在笔记本电脑端部署的多模态大模型
  • 杂谈:前端 UI 框架和 UI 组件库的区别
  • 【已解决】Error: listen EACCES: permission denied 0.0.0.0:8082 端口占用+没有进程
  • 基于Python+MySql实现(Web)校园学习助手网站
  • Feign请求发生中文乱码
  • 您对下列文件的本地修改将被合并操作覆盖XXXXX请 在 合 并前 提 交 或贮 藏 您 的 修 改
  • 赛逸展2025创新模式,以科技创新奖赋能展位战略价值