2024.4.14 Python爬虫复习Day02

day02_web服务器优化

注意: 需要提前把资料中source目录复制到当前项目中

1.回顾基本web服务器

# 1.导包(fastapi和uvicorn)
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象(注意:创建对象的时候,类名后加小括号())
api = FastAPI()# 3.让对象帮助咱们干活(接收浏览器请求并且给浏览器响应)
# 装饰器根据要访问的资源路径调用对应的函数
@api.get('/')
def show():return Response('load index.html...')@api.get('/hm.jpg')
def show():return Response('load hm.jpg...')# 4.启动服务器(必须传入上述创建的对象,注意:ip地址和端口号有默认,当然也可以自己指定)
uvicorn.run(api, host='127.0.0.1', port=9091)

2.web服务器_返回多资源

# 1.导包(fastapi和uvicorn)
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象(注意:创建对象的时候,类名后加小括号())
api = FastAPI()# 3.让对象帮助咱们干活(接收浏览器请求并且给浏览器响应)
# 装饰器根据要访问的资源路径调用对应的函数
@api.get('/')#这一行使用FastAPI装饰器语法定义了一个路由。@api.get()指定了HTTP方法为GET,
# 并且当客户端访问根路径/时,将会触发接下来定义的show()函数。
# 这意味着,当用户在浏览器中访问http://your-server-url/时,会执行这个函数来处理请求。
def show():f = open('index.html', 'rb')data = f.read()f.close()return Response(data)@api.get('/index.html')
# 这一行使用FastAPI装饰器语法定义了一个路由。@api.get()指定了HTTP方法为GET,
# 并且当客户端访问路径/index.html时,
# 将会触发接下来定义的show()函数。这意味着,
# 当用户在浏览器中访问http://your-server-url/index.html时,会执行这个函数来处理请求。
def show():# 定义了一个名为show的函数,它将作为/index.html路由对应的处理器f = open('index.html', 'rb')# 在函数内部,使用Python内置的open()函数以二进制读取模式('rb')# 打开本地文件系统中的index.html文件,并将打开的文件句柄赋值给变量f。data = f.read()# 调用文件句柄f的read()方法,读取整个文件的内容并将其存储在变量data中。# 这里假设index.html是一个较小的文件,可以一次性读入内存。对于大文件,可能需要采用流式读取或其他策略。f.close()return Response(data)# 最后,函数返回一个Response对象。这个对象是由fastapi.Response类实例化而成的,# 其构造参数data被设置为之前读取到的HTML文件内容。# Response对象封装了HTTP响应的详细信息,包括响应体、状态码、头部等。在这里,# 我们只指定了响应体(即HTML文件内容),# 其余部分将使用FastAPI和HTTP协议的默认设置。# 返回这个Response对象后,FastAPI框架会将其转换为一个完整的HTTP响应,# 并通过运行中的Web服务器(如Uvicorn)发送回客户端。@api.get('/hm.jpg')
def show():f = open('hm.jpg', 'rb')data = f.read()f.close()return Response(data)# 4.启动服务器(必须传入上述创建的对象,注意:ip地址和端口号有默认,当然也可以自己指定)
uvicorn.run(api, host='127.0.0.1', port=9092)

3.web服务器_局域网ip

127.0.0.1: 回环地址,本身指代本地主机ipconfig: 查看本机ip地址(局域网或者外网的ip都能查看)注意: 在web服务器中如果服务器指定的是本地局域网分配的ip地址,那么此局域网内所有的主机都能互相访问
# 1.导包(fastapi和uvicorn)
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象(注意:创建对象的时候,类名后加小括号())
api = FastAPI()# 3.让对象帮助咱们干活(接收浏览器请求并且给浏览器响应)
# 装饰器根据要访问的资源路径调用对应的函数
@api.get('/')
def show():f = open('index.html', 'rb')data = f.read()f.close()return Response(data)@api.get('/index.html')
def show():f = open('index.html', 'rb')data = f.read()f.close()return Response(data)@api.get('/hm.jpg')
def show():f = open('hm.jpg', 'rb')data = f.read()f.close()return Response(data)# 4.启动服务器(必须传入上述创建的对象,注意:ip地址和端口号有默认,当然也可以自己指定)
# 注意: web服务器指定本地的实际局域网地址
uvicorn.run(api, host='192.168.86.41', port=9093)

4.web服务器_实战

# 实战需求: 已知source资源,要求搭建一个web服务器,启动并可以让客户端远程访问资源
# 1.导包
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象
zs = FastAPI()# 3.对象帮助咱们接收浏览器请求,并且给浏览器响应
# 浏览器输入url: 协议/域名:端口号/资源路径
# 注意: get后面就是url里的资源路径
@zs.get('/')
def show():f = open('source/html/index.html', mode='r', encoding='utf8')data = f.read()f.close()return Response(data)@zs.get('/index.html')
def show():f = open('source/html/index.html', mode='rb')data = f.read()f.close()return Response(data)@zs.get('/gdp.html')
def show():f = open('source/html/gdp.html', mode='rb')data = f.read()f.close()return Response(data)@zs.get('/images/0.jpg')
def show():f = open('source/images/0.jpg', 'rb')data = f.read()f.close()return Response(data)@zs.get('/images/1.jpg')
def show():f = open('source/images/1.jpg', 'rb')data = f.read()f.close()return Response(data)@zs.get('/images/2.jpg')
def show():f = open('source/images/2.jpg', 'rb')data = f.read()f.close()return Response(data)@zs.get('/images/3.jpg')
def show():f = open('source/images/3.jpg', 'rb')data = f.read()f.close()return Response(data)@zs.get('/images/4.jpg')
def show():f = open('source/images/4.jpg', 'rb')data = f.read()f.close()return Response(data)@zs.get('/images/5.jpg')
def show():f = open('source/images/5.jpg', 'rb')data = f.read()f.close()return Response(data)@zs.get('/images/6.jpg')
def show():f = open('source/images/6.jpg', 'rb')data = f.read()f.close()return Response(data)@zs.get('/jzc.avi')
def show():f = open('source/video/jzc.avi', 'rb')data = f.read()f.close()return Response(data)# 4.启动服务器
uvicorn.run(zs, host='192.168.86.41', port=9094)

5.web服务器_处理所有图片

# 实战需求: 现有的服务器代码,重复代码多,不利于以后扩展,需要升级优化
# 1.导包
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象
zs = FastAPI()# 3.对象帮助咱们接收浏览器请求,并且给浏览器响应
# 浏览器输入url: 协议/域名:端口号/资源路径
# 注意: get后面就是url里的资源路径
@zs.get('/')
def show():f = open('source/html/index.html', mode='r', encoding='utf8')data = f.read()f.close()return Response(data)@zs.get('/index.html')
def show():f = open('source/html/index.html', mode='rb')data = f.read()f.close()return Response(data)@zs.get('/gdp.html')
def show():f = open('source/html/gdp.html', mode='rb')data = f.read()f.close()return Response(data)@zs.get('/render.html')
def show():f = open('source/html/render.html', mode='rb')data = f.read()f.close()return Response(data)# 自动接收用户在浏览器输入的url,然后自动截取图片名赋值给img_name
@zs.get('/images/{img_name}')
def show(img_name):f = open(f'source/images/{img_name}', 'rb')data = f.read()f.close()return Response(data)@zs.get('/jzc.avi')
def show():f = open('source/video/jzc.avi', 'rb')data = f.read()f.close()return Response(data)# 4.启动服务器
uvicorn.run(zs, host='192.168.86.41', port=9095)

6.web服务器_处理其他资源

# 实战需求: 现有的服务器代码,重复代码多,不利于以后扩展,需要升级优化
# 1.导包
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象
zs = FastAPI()# 3.对象帮助咱们接收浏览器请求,并且给浏览器响应
# 浏览器输入url: 协议/域名:端口号/资源路径
# 注意: get后面就是url里的资源路径
# 接收的url请求: http://192.168.86.41:9096/
@zs.get('/')
def show():f = open('source/html/index.html', mode='r', encoding='utf8')data = f.read()f.close()return Response(data)# 自动接收用户在浏览器输入的url,然后自动截取文件名赋值给html_name
# 接收的url请求: http://192.168.86.41:9096/页面或者其他资源
@zs.get('/{html_name}')
def show(html_name):f = open(f'source/html/{html_name}', 'rb')data = f.read()f.close()return Response(data)# 自动接收用户在浏览器输入的url,然后自动截取图片名赋值给img_name
# 接收的url请求: http://192.168.86.41:9096/images/图片
@zs.get('/images/{img_name}')
def show(img_name):f = open(f'source/images/{img_name}', 'rb')data = f.read()f.close()return Response(data)@zs.get('/video/{vi_name}')
def show(vi_name):f = open(f'source/video/{vi_name}', 'rb')data = f.read()f.close()return Response(data)# 4.启动服务器
uvicorn.run(zs, host='192.168.86.41', port=9096)

7.web服务器_withopen

1.with open格式with open(文件路径,文件模式,文件编码) as f:读写操作2.with open特点: 可以自动关闭文件对象	
# 实战需求: 现有的服务器代码,重复代码多,不利于以后扩展,需要升级优化
# 1.导包
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象
zs = FastAPI()# 3.对象帮助咱们接收浏览器请求,并且给浏览器响应
# 浏览器输入url: 协议/域名:端口号/资源路径
# 注意: get后面就是url里的资源路径
# 接收的url请求: http://192.168.86.41:9096/
#
@zs.get('/')
def show():# with open任何情况下,文件都会自动关闭with open('source/html/index.html', mode='r', encoding='utf8') as f:data = f.read()return Response(data)# 自动接收用户在浏览器输入的url,然后自动截取文件名赋值给html_name
# 接收的url请求: http://192.168.86.41:9096/页面或者其他资源
@zs.get('/{html_name}')
def show(html_name):with open(f'source/html/{html_name}', 'rb') as f:data = f.read()return Response(data)# 自动接收用户在浏览器输入的url,然后自动截取图片名赋值给img_name
# 接收的url请求: http://192.168.86.41:9096/images/图片
@zs.get('/images/{img_name}')
def show(img_name):f = open(f'source/images/{img_name}', 'rb')data = f.read()f.close()return Response(data)@zs.get('/video/{vi_name}')
def show(vi_name):f = open(f'source/video/{vi_name}', 'rb')data = f.read()f.close()return Response(data)# 4.启动服务器
uvicorn.run(zs, host='192.168.86.41', port=9096)

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

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

相关文章

jenkins通过pipeline部署springboot项目

部署方案: 1、springboot项目不保存部署的pipeline或dockerfile构建脚本等与部署相关的问文件,业务项目只需关心业务,能够正常构建为jar包即可 2、新建一个代码仓库,用于保存项目需要构建的Jenkinsfile 3、jenkins配置pipeline地址…

李廉洋;4.14黄金原油最新资讯,下周一盘走势分析及策略。

现货黄金昨日一度创下2430美元/盎司的历史新高,但随后一路回调至2344美元附近,较历史高位回落近百美元。分析师表示这是因为投资者在被视为过度的价格反弹中获利了结并离场所致。金融机构MKS PAMP SA的金属策略主管Nicky Shiels表示:“随着大…

基于Docker构建CI/CD工具链(六)使用Apifox进行自动化测试

添加测试接口 在Spring Boot Demo项目里实现一个简单的用户管理系统的后端功能。具体需求如下: 实现了一个RESTful API,提供了以下两个接口 : POST请求 /users:用于创建新的用户。GET请求 /users:用于获取所有用户的列…

计算机网络技术-RIP、0SPF和BGP协议的工作原理和应用

目录 RIP (Routing Information Protocolv)路由信息协议OSPF(Open Shortest Path First) 开放式最短路径优先BGP( Border Gateway Protocol)边界网关协议 RIP (Routing Information Protocolv)路由信息协议 RIP协议 是 TCP/IP环境中开发的第一个路由选择…

微信小程序相关

目录 一、WXML与HTML的异同 二、WXSS和CSS的异同 三、微信小程序主要目录和文件的作用 四、小程序的双向绑定和vue的异同 五、微信小程序有哪些传值(传递数据)方法 六、小程序的生命周期函数 APP生命周期 Page生命周期 Component生命周期 七、小程序的原理 八、小程…

STC89C52学习笔记(十一)

STC89C52学习笔记(十一) 综述:本文讲述了直流电机以及PWM调速。 一、直流电机 1、特点 (1)直流电机能将电能转化位机械能。 (2)直流电机有两个电极,电极正接时,电机…

【核心完整复现】基于目标级联法的微网群多主体分布式优化调度

1 主要内容 之前发布了华电学报的复现程序《基于目标级联法的微网群多主体分布式优化调度》,具体链接为【防骗版】基于目标级联法的微网群多主体分布式优化调度,虽然对模型及结果进行了复现,但是部分模型细节和参数并没有完全实现&#xff0…

【leetcode面试经典150题】47. 最长连续序列(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

2024长三角快递物流高质量创新发展论坛

2024长三角快递物流供应链与技术装备展览会(杭州) 2024年7月8-10日 | 杭州国际博览中心 指导单位:浙江省邮政管理局 中国快递协会 主办单位:浙江省快递行业协会 联合主办:上海市快递协会 江苏省快递协会 安徽省快递…

Ajax跨域请求

解决 AJAX 跨域请求的方法有几种。跨域请求指的是通过 AJAX 在不同域名、端口或协议下进行的请求,由于浏览器的安全策略限制,这些请求可能会被阻止。以下是一些常见的解决方法: 1、使用服务器代理 在你的服务器上创建一个代理,将…

ubuntu22下使用vscode调试redis7源码环境搭建

ubuntu22下使用vscode调试redis7源码环境搭建 ##vscode launch.json配置文件 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0&…

【DL水记】循环神经网络RNN的前世今生,Transformer的崛起,Mamba模型

文章目录 RNN网络简介传统RNN网络结构RNN的分类 长-短期记忆网络 (LSTM)GRU网络横空出世的Transformer网络Self-AttentionVisionTransformer Mamba模型Reference: RNN网络简介 “当人类接触新事物时,他们不会从头开始思考。就像你在阅读这篇文章时,你会根…

目标检测笔记

目标检测笔记 one-stage和two-stage目标检测算法Two-Stage 目标检测算法One-Stage 目标检测算法既然Faster R-CNN使得候选区域生成和目标检测可以在同一个网络中端到端训练,为什么它还是属于Two-stage算法? 目标检测模型,训练中的正负样本是什…

根据ELK官网指引部署ELK- ECK-Elastic-​ Kibana​-Learn-ELK-(一)

**Attention: 1、You need open the ELK official website and step by step to deploy . 2、If you copy my command ,you must check them if it not match your environment . 一、official website Elastic documentation | Elastic Check there. 二、 ECK简介…

常用接口测试工具/免费api

一 接口编辑文档 常用的接口文档编写apipost 二 免费接口测试 api 1. thecat 含有: The Cat API - Cat as a Service The Cat API 2. public-apis 进入页面往下拉 三 常用接口测试工具 postman 四 常用接口性能测试工具 Jmeter,loadrunner

FRDM-MCXN947开发板之RGB灯

一、背景 RGB LED:通过红、绿、蓝三种颜色组合发光的LED,可以理解由三个不同发光属性的LED组成,这个是LCD平板显示原理的基础,一个LED相当于屏幕上面的一个像素 FRDM-MCXN947集成了一块RGB LED,它由三个GPIO口驱动&am…

2024 Guitar Pro 8.1.2-27 (x64) win/mac中文激活版破解版

吉他爱好者必备神器:Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及,越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中,Guitar Pro因其强大的功能和易用的界面备受推崇…

Docker Image (镜像) 常见命令

Docker Image (镜像) 常用命令 docker images 功能:列出本地所有的镜像。如果镜像 ID 相同,但是 Tag 标签不同,也会被当作不同的条目被列出来。 语法: docker images [options] [REPOSITORY[:TAG]] 别名: docker ima…

如何对图像进行聚类

文章来源:https://medium.com/voxel51/how-to-cluster-images-6e09bdff7361 2024 年 4 月 10 日 使用 FiftyOne、Scikit-learn和特征嵌入 在 2024 年深度学习的计算密集型环境中,集群一词最常出现在讨论 GPU 集群时--高度优化的矩阵乘法机器的大规模集…

Mac下安装NVM,NVM安装Node(附带NPM)

1、理解NVM、node、NPM 什么是NVM? NVM: Node.js Version Manager,用来管理 node 的版本。 什么是 Node.js? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js使用了一个事件驱动、非阻塞式I/O的模型( Node.js的特性&…