Tomcat服务器和Web开发介绍

article/2025/10/22 10:24:43

Tomcat服务器和Web开发介绍

一、开启Web开发

什么是web开发

WEB,即网页的意思,它用于表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

问题:静态web资源开发技术和动态web资源开发技术分别有哪些?

在Java中,动态web资源开发技术统称为Javaweb,我们课程的重点也是教大家如何使用Java技术开发动态的web资源,即动态web页面。

二、Web容器_Tomcat

学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。

目前有一款免费且应用广泛的web容器Tomcat,是我们学习的首选该服务器支持JSP以及Servlet规范。启动成功后,通过浏览器访问效果如下:
JSP:html+java
Servlet:技术

在这里插入图片描述

三、常见的启动问题及tomcat目录介绍

常见启动问题
使用startup.bat文件启动Tomcat
Catalina_home环境变量
Java_home环境变量

TOMCAT的启动需要一个环境变量JAVA_HOME

端口占用问题(更改默认端口)
其他程序占用了这个端口,修改这个端口
解决办法:
Conf/server.xml 搜8080 替换

Tomcat的目录层次
Bin:存放二进制文件,启动和关闭tomcat
Conf:配置文件,配置端口,配置数据库连接池,web.xml
Lib:jar文件,支撑tomcat运行
Logs:存放tomcat运行日志信息
Temp:临时目录,给tomcat自己用的
Webapps:存放我们要部署的项目
Work:工作目录,区别(jsp)

四、JavaWeb应用程序

WEB应用程序指供浏览器访问的程序,通常也简称为web应用。
一个web应用由多个静态web资源和动态web资源组成,如:
html、css、js文件
Jsp文件、java程序、支持jar包、相关的配置文件等等

Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。

五、Web应用的组成结构

开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。下面我们使用eclipse来开发我们的第一个web应用程序

六、Tomcat的体系结构

Server代表整个Servlet容器组件,是最顶层元素,包含多个Service元素。

Service包含一个Engine元素以及多个Connector元素

Connector元素代表和客户端程序交互的组件,负责接收客户端请求和向客户端返回响应。

Engine中可以包含多个Host,Host表示一个虚拟主机,他可以包含多个web应用

Context代表运行在虚拟主机上的单个web应用

七、什么是Servlet

Servlet是sun公司提供的一门用于开发动态web资源的技术,可以实现和客户端的交互,接收客户端请求和给客户端返回响应。
Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源需要完成以下2个步骤:
编写一个Java类,实现servlet接口。
把开发好的Java类部署到web服务器中。

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*** 1.创建MyServlet类,继承HttpServlet(前提:先导入servlet_api.jar)* 2.重写service()* 3.在web.xml配置Servlet信息*/
public class MyServlet01 extends HttpServlet {/*** 客户端发送请求到本Servlet中,Tomcat服务器就会调用service方法,并传进来请求对象和响应对象*/@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置编码格式req.setCharacterEncoding("UTF-8");//设置请求编码格式resp.setContentType("text/html;charset=UTF-8");//设置响应编码格式//获取请求中的数据String username = req.getParameter("username");String password = req.getParameter("password");System.out.println("接收到来自客户端的请求了... " + username + " -- " + password);//通过响应返回数据resp.getWriter().println("<h1>把微笑带回家</h1>");}
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>欢迎页面</h1><a href="aaa?username=ggc&password=123123">MyServlet发送请求</a><br><input type="button" value="向MyServlet02发送请求" onclick="fun01()"/><br><a href="register.html">跳转到注册页面</a><script type="text/javascript">function fun01() {location ="bbb?username=ggc&password=111222";}</script></body>
</html>

优化代码

/*** 1.创建MyServlet类,继承HttpServlet(前提:先导入servlet_api.jar)* 2.重写doGet()和doPost()* 3.在web.xml配置Servlet信息*/
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class MyServlet02 extends HttpServlet {/*** 客户端发送Get请求到本Servlet中,Tomcat服务器就会调用doGet方法,并传进来请求对象和响应对象*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req,resp);}/*** 客户端发送Post请求到本Servlet中,Tomcat服务器就会调用doPost方法,并传进来请求对象和响应对象*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置编码格式req.setCharacterEncoding("UTF-8");//设置请求编码格式resp.setContentType("text/html;charset=UTF-8");//设置响应编码格式//获取请求中的数据String username = req.getParameter("username");String password = req.getParameter("password");System.out.println("MyServlet02接收到来自客户端的请求了... "+ username + " -- " + password);//通过响应返回数据resp.getWriter().println("<h1>把微笑带回家</h1>");}
}

八、Servlet的实现类

Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。
HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法

第一步:创建一个类,继承HttpServlet,重写service方法
第二步:注册

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>注册页面</h1><form action="ccc" method="post">账号:<input type="text" name="username"/><br>密码:<input type="password" name="password"/><br>性别:<input type="radio" name="sex" value="man" checked="checked"/><input type="radio" name="sex" value="woman"/><br>籍贯:<select id="province" name="province"><option value="sc">四川</option><option value="hn">湖南</option><option value="hb">湖北</option></select><select id="city" name="city"><option value="cd">成都</option><option value="nc">南充</option><option value="yb">宜宾</option></select><br>爱好:<input type="checkbox" name="hobbys" value="football"/>足球<input type="checkbox" name="hobbys" value="basketball"/>篮球<input type="checkbox" name="hobbys" value="shop"/>购物<br><input type="submit" value="注册"/></form><script type="text/javascript">var province = document.getElementById("province");var city = document.getElementById("city");//改变事件province.onchange = function () {var v = this.value;if(v == "sc"){addCity(["成都","南充","宜宾"],["cd","nc","yb"]);}else if(v == "hn"){addCity(["长沙","娄底","怀化","益阳","永州"],["cs","ld","hh","yy","yz"]);}else if(v == "hb"){addCity(["武汉","仙桃","黄冈","孝感","十堰","咸宁","宜昌","恩施"],["wh","xt","hg","xg","sy","xn","yc","es"]);}}function addCity(cityArr,valueArr){//清空city下拉列表中的数据city.length = 0;for(var i = 0;i<cityArr.length;i++){var cityName = cityArr[i];var option = document.createElement("option");option.innerText = cityName;option.value = valueArr[i];city.appendChild(option);}}</script>
</body>
</html>
/*** 1.创建MyServlet类,继承HttpServlet(前提:先导入servlet_api.jar)* 2.重写doGet()和doPost()* 3.在web.xml配置Servlet信息*/
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;public class MyServlet03 extends HttpServlet {/*** 客户端发送Get请求到本Servlet中,Tomcat服务器就会调用doGet方法,并传进来请求对象和响应对象*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req,resp);}/*** 客户端发送Post请求到本Servlet中,Tomcat服务器就会调用doPost方法,并传进来请求对象和响应对象*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置编码格式req.setCharacterEncoding("UTF-8");//设置请求编码格式resp.setContentType("text/html;charset=UTF-8");//设置响应编码格式//获取请求中的数据集合
//        Map<String, String[]> parameterMap = req.getParameterMap();
//        Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
//        for(Map.Entry<String, String[]> entry : entries){
//            System.out.println(entry.getKey() + " -- " + Arrays.toString(entry.getValue()));
//        }//获取请求中的数据String username = req.getParameter("username");String password = req.getParameter("password");String sex = req.getParameter("sex");String province = req.getParameter("province");String city = req.getParameter("city");String[] hobbys = req.getParameterValues("hobbys");System.out.println("MyServlet03接收到来自客户端的请求了... " + username + " -- " + password + " -- " + sex  + " -- " + province + " -- " + city + " -- " + Arrays.toString(hobbys));//通过响应返回数据resp.getWriter().println("<h1>把微笑带回家</h1>");}
}

九、解析过程

Tomcat在加载Web应用时,就会把相应的web.xml文件中的数据读入到内存中。因此当Tomcat在解析web请求的时候,需要参考web.xml文件时,实际上只需要从内存中读取相关数据就可以了,不需要再到文件系统中读取web.xml。

十、Servlet的运行过程

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
1,Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步。
2,装载并创建该Servlet的一个实例对象。
3,调用Servlet实例对象的init()方法。
4,创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
5,WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

十一、Servlet的生命周期

Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。
针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。
如果在元素中配置了一个元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。
用途:为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的公共数据。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><a href="Servlet01">Servlet01发送请求</a>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><welcome-file-list><welcome-file>welcome.html</welcome-file></welcome-file-list><!--<servlet>--><!--<servlet-name>Servlet01</servlet-name>--><!--<servlet-class>com.qf.servlet.Servlet01</servlet-class>--><!--<init-param>--><!--<param-name>code</param-name>--><!--<param-value>UTF-8</param-value>--><!--</init-param>--><!--<load-on-startup>3</load-on-startup>--><!--</servlet>--><!--<servlet-mapping>--><!--<servlet-name>Servlet01</servlet-name>--><!--<url-pattern>/Servlet01</url-pattern>--><!--</servlet-mapping>--></web-app>
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** Servlet作用:*      1.接收来自客户端的请求,并且可以获取请求信息*      2.执行具体的业务(登录、注册、展示商品、加入购物车....)*      3.通过响应返回数据给客户端** Servlet生命周期:*      1.第一次发送给该Servlet请求后,会创建该Servlet的对象,调用无参构造、init()*      2.服务器根据请求方式选择调用doGet()或doPost()*      3.关闭服务器时销毁Servlet对象,调用destroy()*  小结:在一般情况下,Servlet是单例的** Servlet何时被创建?*      1.第一次发送请求时*      2.在web.xml -> servlet -> <load-on-startup>1</load-on-startup>,该Servlet在项目启动时就会创建对象*      3.在Servlet添加了@WebServlet(loadOnStartup=1),该Servlet在项目启动时就会创建对象*/@WebServlet(value = "/Servlet01",initParams={@WebInitParam(name="code",value="UTF-8")},loadOnStartup=1
)
public class Servlet01 extends HttpServlet {/*** Servlet构造方法*/public Servlet01() {System.out.println("Servlet01 -- Servlet01()");}/*** Servlet初始化方法* @param  config Servlet的配置文件对象*/@Overridepublic void init(ServletConfig config) throws ServletException {String code = config.getInitParameter("code");System.out.println("Servlet01 -- init() :" + code);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Servlet01接收到客户端的请求了...");}/*** Servlet销毁方法*/@Overridepublic void destroy() {System.out.println("Servlet01 -- destroy()");}
}

十二、ServletConfig对象

在Servlet的配置文件中,可以使用一个或多个标签为servlet配置一些初始化参数。

当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

阅读ServletConfig API,并举例说明该对象的作用:

获得字符集编码

获得数据库连接信息实际的Servlet开发中,可以直接通过getServletConfig()的到ServletConfig对象。

十三、Servlet线程安全问题

多个客户端访问同一个Servlet中的资源时,有可能会出现线程安全问题

解决方案

1.将Servlet实现SingleThreadModel(已过时),因为当线程阻塞,就会创建新的Servlet对象

2.利用线程锁机制, synchronized或lock

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><a href="MyServlet">MyServlet发送请求</a>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><welcome-file-list><welcome-file>welcome.html</welcome-file></welcome-file-list>
</web-app>
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** Servlet是否是单例的?*      一般情况下,Servlet是单例的*      如果Servlet实现类实现了SingleThreadModel接口,Tomcat服务器发现Servlet线程阻塞了,就会新创建一个Servlet对象*/
@WebServlet("/MyServlet")
//public class MyServlet extends HttpServlet implements SingleThreadModel {
public class MyServlet extends HttpServlet {private int num = 0;public MyServlet() {System.out.println("MyServlet被创建了");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");synchronized (this){num++;try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}response.getWriter().println(num);}}
}

http://chatgpt.dhexx.cn/article/srnl7txT.shtml

相关文章

C#开发自己的Web服务器

下载源代码 介绍 我们将学习如何写一个简单的web服务器&#xff0c;用于响应知名的HTTP请求&#xff08;GET和POST)&#xff0c;用C#发送响应。然后&#xff0c;我们从网络访问这台服务器&#xff0c;这次我们会说“Hello world!” 背景 HTTP协议 HTTP是服务器和客户机之间的通…

Web开发介绍

Web开发介绍 1 什么是web开发 Web&#xff1a;全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站。 所以Web开发说白了&#xff0c;就是开发网站的&#xff0c;例如下图所示的网站&#xff1a;淘宝&#xff0c;京东等等 那么我们…

搭建web服务器

1.要求搭建web服务器&#xff0c;能够访问到网页内容为“小胖&#xff0c;你咋这么胖呢&#xff01;” 2.要求搭建web服务器&#xff0c;创建基于域名的虚拟主机&#xff0c;能够使用www.xiaopang.com和www.dapang.com访问各自的网站网站存放路径分别为/xiaopang和/dapang,内容…

Web开发及服务器

转载自https://www.cnblogs.com/xdp-gacl/p/3729033.html。 一、基本概念 1.1、WEB开发的相关知识 WEB&#xff0c;在英语中web即表示网页的意思&#xff0c;它用于表示Internet主机上供外界访问的资源。 Internet上供外界访问的Web资源分为&#xff1a; 静态web资源&#x…

EI数据库免费检索入口

转载自&#xff1a;http://www.ei-istp.com/New_691.html 具体查询方式&#xff0c;详看链接。

数据库搜索与索引

索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她&#xff0c;则与在表中搜索所有的行相比&#xff0c;索引有助于更快地获取信息。 索引的一个主要目的就是加快检索表中数据&#x…

数据库 索引

多数数据库&#xff0c;使用 B 树&#xff08;Balance Tree&#xff09;的结构来保存索引。 B 树&#xff0c; 最上层节点&#xff1a;根节点 最下层节点&#xff1a;叶子节点 两者之间的节点&#xff1a;中间节点 B 树&#xff0c;显著特征&#xff1a;从根节点&#xff0c;到…

mysql全库搜索关键字_数据库 全文检索

一、概述 MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。 二、语法 MATCH (col1,col2,...) AGAINST (expr [search_modifier]) search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION } 例如:SELECT * FROM tab_n…

人文社科类文献去哪些数据库检索下载

查找下载人文社科类文献的数据库大盘点&#xff1a; 1、文献党下载器&#xff08;wxdown.org&#xff09; 大型文献馆&#xff0c;几乎整合汇集了所有中外文献数据库资源&#xff0c;可附带权限进入文献数据库查找下载文献&#xff0c;覆盖全科包括查找下载人文社科类文献的众…

数据库索引的实现原理

强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1 说白了,索引问题就是一个查找问题。。。 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足…

WoS数据库使用及检索示例

目录 快速了解一个领域的情况 1. 核心合集检索和所有数据库检索的区别 2. 检索结果分析 2.1 排序方式&#xff08;日期&#xff0c;被引频次&#xff09; 2.2 分析检索结果 2.3 精炼检索结果&#xff08;二次检索&#xff09; 2.4 创建引文报告 2.5 具体某一篇文献 快…

【MySQL】检索数据

每日鸡汤 &#xff1a; —— 若你困于无风之地&#xff0c;我将奏响高空之歌 要和我一起花 10 min 学一会 SQL 嘛&#xff1f; - 当然愿意&#xff0c;我美丽的小姐 &#xff08;封寝期间练就的自言自语能力越来越炉火纯青了~~~&#xff09; 前言&#xff1a; 本实验中所用数据…

数据库的检索(select)

今天我们学习一下数据库检索语句&#xff0c;由于经常用到&#xff0c;有需求的小伙伴欢迎来查看哦&#xff01; 一、简单的查询 --获取所以列 select * from T_table --获取部分列 select id, title from T_table 效果展示&#xff1a; 在...之间&#xff1a;Between.. a…

《MySQL必知必会》学习笔记之“数据库的检索”

文章目录 第一章 SQL与MySQL1 数据库基础2 什么是SQL3 客户机—服务器软件4 MySQL工具mysql命令行实用程序&#xff08;使用最多的实用程序之一&#xff09;MySQL AdministratorMySQL Query Browser 第二章 使用MySQL1 连接2选择数据库3了解数据库和表4 注释 第三章 检索数据1 …

最全最易理解的数据库查询教程

数据库查询 检索数据表中一个字段的内容检索数据表中多个字段的内容检索数据表中所有字段的内容带限制条件的查询表达式查询使用 WHERE 语句和逻辑表达式使用WHERE语句检索单范围数据使用WHERE语句检索双范围数据使用WHERE语句检索不匹配某条件的语句使用通配符[]模糊匹配数据内…

数据库基础知识——SELECT 语句(检索数据)

SQL使用 SQL&#xff08;发音为字母S-Q-L或sequel&#xff09;是结构化查询语言&#xff08;Structured Query Language&#xff09;的缩写。SQL是一种专门用来与数据库通信的语言。 SQL 语言特点&#xff1a; SQL 语言不区分大小写&#xff1b;在命令行窗口的 SQL 语句要以…

Python爬虫获取数据保存到数据库中(超级详细,保证一看就会)

1.简介介绍 -网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动…

python数据爬取---简单页面的爬取

1、准备Requests和User Agent python中能实现爬虫功能的库有若干个&#xff0c;而最简单最容易上手的&#xff0c;要数Requests库&#xff0c;它是一个常用的http请求库&#xff0c;首先用pip install requests 进行安装才能使用。 User Agent一般翻译为用户代理&#xff0c;…

Python小姿势 - # 如何使用Python爬取网页数据

如何使用Python爬取网页数据 今天我们来学习一下如何使用Python来爬取网页数据。 首先&#xff0c;我们需要准备一个空白的文件&#xff0c;在文件中输入以下代码&#xff1a; import requests url http://www.baidu.com r requests.get(url) print(r.text) 上面的代码中&…

Python爬取数据

爬虫基本思路<通用> Response 服务器返回响应数据 Preview 预览 Payload 请求参数 Headers 头部信息&#xff1a;请求url地址、请求方式、响应头、请求头 一、数据来源分析 -抓包分析我们想要的数据内容&#xff0c;请求的那个网页 url地址得到。 -选中xhr 找到想要的内容…