05 HTTP Tomcat Servlet

文章目录

  • HTTP
    • 1、简介
    • 2、请求数据格式
    • 3、响应数据格式
  • Tomcat
    • 1、简介
    • 2、基本使用
    • 3、Maven创建Web项目
    • 4、IDEA使用Tomcat
  • Servlet
    • 1、简介
    • 2、方法介绍
    • 3、体系结构
    • 4、urlPattern配置
    • 5、XML配置

HTTP

1、简介

  1. HTTP概念
    • HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则
      • 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输
      • 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看某一次请求的请求数据和响数据具体的格式内容
      • 在浏览器中如果看不到上述内容,需要清除浏览器的浏览数据。chrome浏览器可以使用ctrl+shift+Del进行清除
      • 所以学习HTTP主要就是学习请求和响应数据的具体格式内容
  2. HTTP协议特点
    • 基于TCP协议: 面向连接,安全
      TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全
    • 基于请求-响应模型:一次请求对应一次响应
    • HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的
      无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息
      • 优点:速度快
      • 缺点:多次请求间不能共享数据
        可以使用会话技术(Cookie、Session)来解决这个问题

2、请求数据格式

  1. 格式介绍
    请求数据总共分为三部分内容,分别是请求行、请求头、请求体
    • 请求行: HTTP请求中的第一行数据
      • 请求行包含三块内容
      • 分别是 GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本]
      • 请求方式有七种,最常用的是GET和POST
    • 请求头: 第二行开始,格式为key: value形式
      • 服务端可以根据请求头中的内容来获取客户端的相关信息
      • 有了这些信息服务端就可以处理不同的业务需求
      • 请求头中会包含若干个属性,常见的HTTP请求头有:
        Host: 表示请求的主机名
        User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;
        Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
        Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
        Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
        
    • 请求体: POST请求的最后一部分,存储请求参数
      • GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中
      • GET请求请求参数大小有限制,POST没有

3、响应数据格式

  1. 格式介绍
    响应数据总共分为三部分内容,分别是响应行、响应头、响应体

    • 响应行:响应数据的第一行
      (1)响应行包含三块内容
      (2)分别是 HTTP/1.1[HTTP协议及版本] 200[响应状态码] ok[状态码的描述]
    • 响应头:第二行开始,格式为key:value形式
      (1)响应头中会包含若干个属性
    • 响应体: 最后一部分。存放响应数据
      (1)响应体和响应头之间有一个空行隔开
  2. 响应状态码

    状态码大全:https://cloud.tencent.com/developer/chapter/13553

Tomcat

1、简介

  1. Web服务器

    • Web服务器是一个应用程序(软件)
      (1)对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷
      (2)主要功能是"提供网上信息浏览服务"
  2. Web服务器软件使用步骤

    • 准备静态资源
    • 下载安装Web服务器软件
    • 将静态资源部署到Web服务器上
    • 启动Web服务器使用浏览器访问对应的资源
  3. Tomcat

    • Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范
    • JavaEE: Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
    • 因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行
    • Tomcat的官网:https://tomcat.apache.org/

2、基本使用

  1. 启动

    • 双击: bin\startup.bat
  2. 关闭

    • 直接x掉运行窗口:强制关闭[不建议]
    • bin\shutdown.bat:正常关闭
    • ctrl+c: 正常关闭
  3. 配置

    • 修改端口:Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml

      注: HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号

    • 启动时可能出现的错误

      • Tomcat的端口号取值范围是0-65535之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误

      • Tomcat启动的时候,启动窗口一闪而过: 需要检查JAVA_HOME环境变量是否正确配置

  4. 部署

    • Tomcat部署项目: 将项目放置到webapps目录下,即部署完成
    • 一般JavaWeb项目会被打包称war包,然后将war包放到Webapps目录下,Tomcat会自动解压缩war文件

3、Maven创建Web项目

  1. Web项目结构
    Web项目的结构分为:开发中的项目和开发完可以部署的Web项目

    • Maven Web项目结构: 开发中的项目
      在这里插入图片描述
    • 开发完成部署的Web项目
      • 开发项目通过执行Maven打包命令package,可以获取到部署的Web项目目录
      • 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
      • pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下
  2. 创建Maven Web项目
    创建方式有两种:使用骨架和不使用骨架

    • 使用骨架
      1.创建Maven项目时,选择使用Web项目骨架

      2.完成项目创建后,删除pom.xml中多余内容

      3.补齐Maven Web项目缺失的目录结构

    • 不使用骨架
      1.创建Maven项目后,在pom.xml设置打包方式为war

      2.补齐Maven Web项目缺失webapp的目录结构

      3.补齐Maven Web项目缺失WEB-INF/web.xml的目录结构

4、IDEA使用Tomcat

在IDEA中集成使用Tomcat有两种方式,分别是集成本地TomcatTomcat Maven插件

  1. 集成本地Tomcat

    • 打开添加本地Tomcat的面板

    • 指定本地Tomcat的具体路径

    • 修改Tomcat的名称,此步骤可以不改,只是让名字看起来更有意义,HTTP port中的端口也可以进行修改,比如把8080改成80

    • 将开发项目部署项目到Tomcat中

      扩展内容: xxx.war和 xxx.war exploded这两种部署项目模式的区别?

      • war模式是将WEB工程打成war包,把war包发布到Tomcat服务器上

      • war exploded模式是将WEB工程以当前文件夹的位置关系发布到Tomcat服务器上

      • war模式部署成功后,Tomcat的webapps目录下会有部署的项目内容

      • war exploded模式部署成功后,Tomcat的webapps目录下没有,而使用的是项目的target目录下的内容进行部署

      • 建议选war模式进行部署,更符合项目部署的实际情况

    • 部署成功后,就可以启动项目

    • 启动成功后,可以通过浏览器进行访问测试

    • 最终的注意事项

  2. Tomcat Maven插件

    • 在pom.xml中添加Tomcat插件

      <build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins>
      </build>
      
    • 使用Maven Helper插件快速启动项目,选中项目,右键–>Run Maven --> tomcat7:run

    • 如果选中项目并右键点击后,看不到Run Maven和Debug Maven,这个时候就需要在IDEA中下载Maven Helper插件,具体的操作方式为: File --> Settings --> Plugins --> Maven Helper —> Install,安装完后按照提示重启IDEA,就可以看到了

    • Maven Tomcat插件目前只有Tomcat7版本,没有更高的版本可以使用(截止2021年)

    • 使用Maven Tomcat插件,要想修改Tomcat的端口和访问路径,可以直接修改pom.xml

      <build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>80</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:80/tomcat-demo2/a.html配置/后访问路径: http://localhost:80/a.html如果配置成 /hello,访问路径会变成什么?答案: http://localhost:80/hello/a.html--><path>/</path></configuration></plugin></plugins>
      </build>
      

Servlet

1、简介

  • 概述

    • Servlet是JavaWeb最为核心的内容,是Java提供的一门动态web资源开发技术
    • 作用:使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容
    • Servlet是JavaEE规范之一,就是一个接口,需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet
  • 快速入门
    需求分析: 编写一个Servlet类,并使用IDEA中Tomcat插件进行部署,最终通过浏览器访问所编写的Servlet程序

    1. 创建Web项目web-demo,导入Servlet依赖坐标

      <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><!--provided指的是在编译和测试过程中有效,最后生成的war包时不会加入因为Tomcat的lib目录中已经有servlet-api这个jar包,如果在生成war包的时候生效就会和Tomcat中的jar包冲突,导致报错--><scope>provided</scope>
      </dependency>
      
    2. 创建:定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中输入一句话

      package com.itheima.web;import javax.servlet.*;
      import java.io.IOException;public class ServletDemo1 implements Servlet {public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("servlet hello world~");}public void init(ServletConfig servletConfig) throws ServletException {}public ServletConfig getServletConfig() {return null;}public String getServletInfo() {return null;}public void destroy() {}
      }
      
    3. 配置:在类上使用@WebServlet注解,配置该Servlet的访问路径

      @WebServlet("/demo1")
      
    4. 访问:启动Tomcat,浏览器中输入URL地址访问该Servlet

      http://localhost:8080/web-demo/demo1
      
  • 执行流程

    • 浏览器发出http://localhost:8080/web-demo/demo1请求,从请求中可以解析出三部分内容,分别是localhost:8080web-demodemo1
      • 根据localhost:8080可以找到要访问的Tomcat Web服务器
      • 根据web-demo可以找到部署在Tomcat服务器上的web-demo项目
      • 根据demo1可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配
    • 找到ServletDemo1这个类后,Tomcat Web服务器就会为ServletDemo1这个类创建一个对象,然后调用对象中的service方法
      • ServletDemo1实现了Servlet接口,所以类中必然会重写service方法供Tomcat Web服务器进行调用
      • service方法中有ServletRequest和ServletResponse两个参数,ServletRequest封装的是请求数据,ServletResponse封装的是响应数据,后期我们可以通过这两个参数实现前后端的数据交互

    Servlet由web服务器创建,Servlet方法由web服务器调用

2、方法介绍

  • 生命周期

    • 生命周期: 对象的生命周期指一个对象从被创建到被销毁的整个过程
    • Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
      • (1)加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
      • (2)初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作,该方法只调用一次
      • (3)请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理
      • (4)服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收
  • 方法
    Servlet中总共有5个方法

    • void init(ServletConfig config) :初始化方法,在Servlet被创建时执行,只执行一次
    • void service(ServletRequest req, ServletResponse res):提供服务方法, 每次Servlet被访问,都会调用该方法
    • void destroy() :销毁方法,当Servlet被销毁时,调用该方法。在内存释放或服务器关闭时销毁Servlet
    • String getServletInfo() :获取Servlet信息
    • ServletConfig getServletConfig():获取ServletConfig对象
    @WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)
    public class ServletDemo2 implements Servlet {private ServletConfig servletConfig;/*** (1)初始化方法*  1.调用时机:默认情况下,Servlet被第一次访问时,调用*      * loadOnStartup: 默认为-1,修改为0或者正整数,则会在服务器启动的时候,调用*  2.调用次数: 1次*/public void init(ServletConfig config) throws ServletException {this.servletConfig = config;System.out.println("init...");}// (5)获取ServletConfig对象public ServletConfig getServletConfig() {return servletConfig;}/*** (2)提供服务* 1.调用时机:每一次Servlet被访问时,调用* 2.调用次数: 多次*/public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("servlet hello world~");}/*** (3)销毁方法* 1.调用时机:内存释放或者服务器关闭的时候,Servlet对象会被销毁,调用* 2.调用次数: 1次*/public void destroy() {System.out.println("destroy...");}//(4)该方法用来返回Servlet的相关信息,没有什么太大的用处,一般返回一个空字符串即可public String getServletInfo() {return "";}}
    

3、体系结构

在这里插入图片描述
我们更关注的其实只有Servlet接口中的service()方法,通过自定义Servlet继承HttpServlet,创建方式更加简单

@WebServlet("/demo4")
public class ServletDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//TODO GET 请求方式处理逻辑System.out.println("get...");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//TODO Post 请求方式处理逻辑System.out.println("post...");}
}

HttpServlet原理:获取请求方式,并根据不同的请求方式,调用不同的doXxx方法
HttpServlet不仅可以处理GET和POST还可以处理其他五种请求方式

4、urlPattern配置

  • 一个Servlet,可以配置多个urlPattern
    例如:@WebServlet(urlPatterns = {“/demo7”,“/demo8”})

  • urlPattern配置规则

    • 精确匹配

    • 目录匹配

    • 扩展名匹配
      在这里插入图片描述

      如果路径配置的不是扩展名,那么在路径的前面就必须要加/否则会报错
      如果路径配置的是*.do,那么在*.do的前面不能加/,否则会报错

    • 任意匹配

      • //*的区别
      1. " / "会覆盖DefaultServlet" /* "不会
      2. tomcat中的DefaultServlet 用来处理静态资源
      3. 当其他的url-pattern匹配不上时会走DefaultServlet
      4. DefaultServlet被覆盖掉,就会引发请求静态资源的时走自定义的Servlet类,导致静态资源无法被访问

    五种配置的优先级为 精确匹配 > 目录匹配> 扩展名匹配 > /* > /

5、XML配置

  • Servlet从3.0版本后开始支持注解配置
  • 3.0版本前只支持XML配置文件的配置方法
  • XML的配置步骤有两步:
    • 编写Servlet类
    • 在web.xml中配置该Servlet
      	<!-- Servlet 全类名--><servlet><!-- servlet的名称,名字任意--><servlet-name>demo13</servlet-name><!--servlet的类全名--><servlet-class>com.itheima.web.ServletDemo13</servlet-class></servlet><!-- Servlet 访问路径--><servlet-mapping><!-- servlet的名称,要和上面的名称一致--><servlet-name>demo13</servlet-name><!-- servlet的访问路径--><url-pattern>/demo13</url-pattern></servlet-mapping>
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙 动态共享包HSP的创建和引用

1.什么是动态共享包HSP HSP&#xff08;Harmony Shared Package&#xff09;是动态共享包&#xff0c;可以包含代码、C库、资源和配置文件&#xff0c;通过HSP可以实现代码和资源的共享。HSP不支持独立发布&#xff0c;而是跟随其宿主应用的APP包一起发布&#xff0c;与宿主应…

【Django5】模板引擎

系列文章目录 第一章 Django使用的基础知识 第二章 setting.py文件的配置 第三章 路由的定义与使用 第四章 视图的定义与使用 第五章 二进制文件下载响应 第六章 Http请求&HttpRequest请求类 第七章 会话管理&#xff08;Cookies&Session&#xff09; 第八章 文件上传…

redis的学习(三):Java客户端jedis的例子和SpringDataRedis的简介

简介 Java客户端jedis的例子和SpringDataRedis的简介## Java客户端 常用的Java客户端有jedis&#xff0c;lettuce&#xff0c;redission。 优缺点&#xff1a; jedis简单实用&#xff0c;api名是redis的命令&#xff0c;学习成本低。不过jedis实例的线程是不安全的&#xff…

VideoAgent: Long-form Video Understanding with Large Language Model as Agent

VideoAgent: Long-form Video Understanding with Large Language Model as Agent 基本信息 博客贡献人 燕青 作者 Xiaohan Wang, Yuhui Zhang, et al. 标签 Large Language Model Agent, Long-form Video Understanding, Vision-Language Foundation Models 摘要 长视…

Android中systrace配置及注意问题

Android中systrace配置及注意问题 systrace配置的官方文档地址如下&#xff1a;优化启动时间 Systrace systrace 允许在启动期间收集内核和 Android 跟踪记录。systrace 的可视化可以帮助分析启动过程中的具体问题。&#xff08;不过&#xff0c;如果要查看整个启动过程中的平…

2024.7.22 作业

1.将双向链表和循环链表自己实现一遍&#xff0c;至少要实现创建、增、删、改、查、销毁工作 循环链表 looplinklist.h #ifndef LOOPLINKLIST_H #define LOOPLINKLIST_H#include <myhead.h>typedef int datatype;typedef struct Node {union {int len;datatype data;}…

win10开启Linux子系统

打开win10开发人员模式&#xff0c;在设置–>更新和安全–>针对开发人员&#xff0c;中勾选开发人员模式。 然后在控制面板中勾选添加Linux子系统。依次进入控制面板–>程序–>启用或关闭windows功能&#xff0c;勾选适用于windows的linux的子系统&#xff0c;点击…

Mac清理垃圾的软件有哪些 怎么清理电脑上的缓存文件和垃圾清理

如果你发现你的Mac运行速度开始慢如蜗牛&#xff0c;或者硬盘空间快速减少&#xff0c;那么可能是时候使用一款好的清理软件来“洗个澡”了。市场上有许多优秀的Mac清理软件&#xff0c;包括一些出色的国产软件和国际知名软件。那么&#xff0c;mac电脑清理垃圾的软件有哪些&am…

Java---后端文件上传详解

袁门才俊志高远&#xff0c; 震古烁今意决然。 风采翩翩才情显&#xff0c; 雄姿英发立世间。 目录 一&#xff0c;简单案例演示 二&#xff0c;服务器本地存储 三&#xff0c;配置单个文件上传大小限制 一&#xff0c;简单案例演示 首先简单编写一个前端网页&#xff1a; &l…

知识图谱:知识图谱概述(一)

一、知识图谱简介 知识图谱&#xff0c;是结构化的语义知识库&#xff0c;主要用于描述现实世界中的实体及其相互关系&#xff0c;由节点和边组成。节点可以是实体&#xff0c;如汽车、街道等&#xff0c;或是抽象的概念&#xff0c;如AI、疾病等。边可以是实体的属性&#xff…

基于FPGA的以太网设计(2)----以太网的硬件架构(MAC+PHY)

1、概述 以太网的电路架构一般由MAC、PHY、变压器、RJ45和传输介质组成,示意图如下所示: 需要注意的是,上图是一个简化了的模型,它描述的是两台主机之间的直接连接,但在实际应用中基本都是多台主机构成的局域网,它们之间并不直接相连,而是通过交换机Switch来进行…

【PPT把当前页输出为图片】及【PPT导出图片模糊】的解决方法(sci论文图片清晰度)

【PPT把当前页输出为图片】及【PPT导出图片模糊】的解决方法 内容一&#xff1a;ppt把当前页输出为图片&#xff1a;内容二&#xff1a;ppt导出图片模糊的解决方法&#xff1a;方法&#xff1a;步骤1&#xff1a;打开注册表编辑器步骤2&#xff1a;修改注册表&#xff1a; 该文…

万字长文之分库分表里无分库分表键如何查询【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 其他查询】

在很多业务里&#xff0c;分库分表键都是根据主要查询筛选出来的&#xff0c;那么不怎么重要的查询怎么解决呢&#xff1f; 比如电商场景下&#xff0c;订单都是按照买家ID来分库分表的&#xff0c;那么商家该怎么查找订单呢&#xff1f;或是买家找客服&#xff0c;客服要找到对…

深入浅出WebRTC—ULPFEC

FEC 通过在发送端添加额外的冗余信息&#xff0c;使接收端即使在部分数据包丢失的情况下也能恢复原始数据&#xff0c;从而减轻网络丢包的影响。在 WebRTC 中&#xff0c;FEC 主要有两种实现方式&#xff1a;ULPFEC 和 FlexFEC&#xff0c;FlexFEC 是 ULPFEC 的扩展和升级&…

websocket实现进度条

websocket实现进度条 做一个简易的websocket实现进度条的练习&#xff0c;效果如下&#xff1a; 前端vue3 <template><el-progress type"circle" :percentage"this.progressValue" :status"this.perstatus" /><el-button cli…

docker tomcat 404

HTTP 404状态码表示“Not Found”&#xff0c;即服务器无法找到请求的页面。 当用户尝试访问一个不存在的网页时&#xff0c;服务器会返回这个状态码。这个状态码是HTTP协议的一部分&#xff0c;用于告知客户端&#xff08;通常是浏览器&#xff09;服务器无法完成请求。404状…

黑马JavaWeb企业级开发(知识清单)02——HTML实现标题:样式(CSS引入、CSS选择器、span标签)和超链接

文章目录 前言一、标题样式1&#xff1a;新闻标题颜色1. CSS三种引入方式2. 颜色表示3. javacode实现 二、标题样式2&#xff1a;发布时间颜色1. < span >标签2. CSS选择器1&#xff09;元素&#xff08;标签&#xff09;选择器&#xff08;优先级最低&#xff09;2&…

IC秋招RTL代码合集

一 全加器和半加器 全加器 module full_adder1(input Ai, Bi, Ci,output So, Co);assign So Ai ^ Bi ^ Ci ;assign Co (Ai & Bi) | (Ci & (Ai | Bi)); endmodule module full_adder1(input Ai, Bi, Cioutput So, Co);assign {Co, So} Ai Bi Ci ; endm…

wireshark过滤器,如何使用wireshark捕获指定域名的流量

过滤器比较高级&#xff0c;但是也很重要&#xff0c;我决定通过一个案例来学习过滤器的知识点。 比如&#xff0c;我现在访问 zhangdapeng.com 我希望能够捕获关于这个域名下的流量&#xff0c;该如何实现呢&#xff1f; 我选择了捕获以太网的流量&#xff0c;但是目前捕获到…

python-爬虫实例(4):获取b站的章若楠的视频

目录 前言 道路千万条&#xff0c;安全第一条 爬虫不谨慎&#xff0c;亲人两行泪 获取b站的章若楠的视频 一、话不多说&#xff0c;先上代码 二、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 道路千万条&#xff0c;安全第一条 爬…