Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >用Python建立最简单的web服务器

用Python建立最简单的web服务器

作者头像
py3study
发布于 2020-01-10 09:07:29
发布于 2020-01-10 09:07:29
9.7K10
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

第一个python Web程序——简单的Web服务器

与其它Web后端语言不同,Python语言需要自己编写Web服务器。

如果你使用一些现有的框架的话,可以省略这一步;

如果你使用Python CGI编程的话,也可以省略这一步;

用Python建立最简单的web服务器

利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认8000] 例如: python -m SimpleHTTPServer 8080 然后就可以在浏览器中输入 http://localhost:端口号/路径

来访问服务器资源。 

例如:

http://localhost:8080/index.htm(当然index.htm文件得自己创建) 其他机器也可以通过服务器的IP地址来访问。 这里的“Web服务器模块”有如下三种:

BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。 SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。

CGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。

自定义处理程序

Google在http://chart.apis.google.com 上提供了一个将表单数据自动转换为图表的服务。不过,该服务很难交互, 因为你需要将数据作为查询放到URL中。此程序为一种数据格式提供了更好的的接口: 给定一小段文本,它将调用图表服务器来生成二维码(QR码),这是一种编码文本的点格矩阵。 该图像可被你的手机摄像头捕获,并解释为一个字符串,比如URL, 这样就免去了你在狭小的手机键盘上键入URL的麻烦。

以下为完整的程序:

[python] view plain copy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import os   #Python的标准库中的os模块包含普遍的操作系统功能 
 import re   #引入正则表达式对象 
 import urllib   #用于对URL进行编解码 
 from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler  #导入HTTP处理相关的模块 
  
  
 #自定义处理程序,用于处理HTTP请求 
 class TestHTTPHandler(BaseHTTPRequestHandler):  
  #处理GET请求 
  def do_GET(self):  
  #页面输出模板字符串 
         templateStr = '''''   
 <html>   
 <head>   
 <title>QR Link Generator</title>   
 </head>   
 <body>   
 %s 
 <br>   
 <br>   
 <form action="/qr" name=f method="GET"><input maxLength=1024 size=70   
 name=s value="" title="Text to QR Encode"><input type=submit   
 value="Show QR" name=qr>   
 </form> 
 </body>   
 </html> ''' 
  
  
  # 将正则表达式编译成Pattern对象 
     pattern = re.compile(r'/qr\?s=([^\&]+)\&qr=Show\+QR')  
  # 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None 
     match = pattern.match(self.path)  
     qrImg = '' 
  
  if match:  
  # 使用Match获得分组信息 
         qrImg = '<img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl=' + match.group(1) + '" /><br />' + urllib.unquote(match.group(1))   
  
  self.protocal_version = 'HTTP/1.1' #设置协议版本 
  self.send_response(200) #设置响应状态码 
  self.send_header("Welcome", "Contect")  #设置响应头 
  self.end_headers()  
  self.wfile.write(templateStr % qrImg)   #输出响应内容 
  
 #启动服务函数 
 def start_server(port):  
     http_server = HTTPServer(('', int(port)), TestHTTPHandler)  
     http_server.serve_forever() #设置一直监听并接收请求 
  
 os.chdir('static')  #改变工作目录到 static 目录 
 start_server(8000)  #启动服务,监听8000端口 

运行访问

我这里将上面上代码保存为:C:\Python\webserver\server1.py,使用UTF-8编码;

打开命令行,切换到 C:\Python\webserver\ 目录,

执行:python server1.py

可能会弹出防火墙警告,点击允许访问。

在浏览器中访问,查看效果,打开浏览器,输入:http://localhost:8000/,结果如下图:

在文本框中输入一个URL,如(http://blog.csdn.NET/testcs_dn),点击Show QR,会生成一张二维码的图片

扫一扫这张二维码看看吧

小结

与其它Web后端语言不同,Python语言需要自己编写Web服务器;

但与Go语言相比,Python稍微有些难以上手。

这里只是编写运行一个简单的例子,看看效果找找感觉。

虽然Python的大名已经知道很久,但最近才真正的接触,文中有不对的地方,有更好的方法还请前辈们多多指教!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
一个可执行文件,外部脚本实现控制器,超简单 https://github.com/edboffical/webdog
一个可执行文件,外部脚本实现控制器,超简单 https://github.com/edboffical/webdog
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
《Python入门》第一个Python
上一篇讲了《Python入门》Windows 7下Python Web开发环境搭建笔记,接下来讲一下Python语言Web服务的具体实现:第一个Python Web程序——简单的Web服务器。
py3study
2020/01/09
5170
Python小姿势 - 如何用Python实现一个简单的Web服务器
这里我们将使用Python的BaseHTTPServer模块来实现一个简单的Web服务器。
不吃西红柿
2023/05/07
3020
搭建HTTP服务器,Python只需要一条命令就搞定了
小伙伴们如果在工作或者学习的时候需要搭建一个简单的HTTP服务器,而不是必须安装那些复杂的HTTP服务程序,比如:Apache,Nginx等。那就可以使用Python自带的包完成一个简单的内建 HTTP 服务器。这样,你就可以把你的目录和文件都以HTTP的方式展示出来。
菜鸟小白的学习分享
2021/06/17
5.3K0
搭建HTTP服务器,Python只需要一条命令就搞定了
使用Python实现简单的Web服务器
随着互联网的快速发展,Web服务器已经成为了我们生活中不可或缺的一部分。在本文中,我们将使用Python编写一个简单的Web服务器,它能够接收HTTP请求并返回响应,同时也支持静态文件的访问。
zayyo
2023/11/30
7850
开启用Python3自带的服务器,CGI将Python用于web
网上大多数教程都给出了如下的开启服务器命令: BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。 SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。 CGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。 ---- 然而,python3里已经没有这些东西了。取而代之的是,python -m http.se
kalifa_lau
2018/04/28
1.3K0
Web服务器-Nginx解决跨域问题
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2025/04/20
1410
Web服务器-Nginx解决跨域问题
Python应用02 Python服务器进化
**注意,在Python 3.x中,BaseHTTPServer, SimpleHTTPServer, CGIHTTPServer整合到http.server包,SocketServer改名为socketserver,请注意查阅官方文档。 在上一篇文章中(用socket写一个Python服务器),我使用socket接口,制作了一个处理HTTP请求的Python服务器。任何一台装有操作系统和Python解释器的计算机,都可以作为HTTP服务器使用。我将在这里不断改写上一篇文章中的程序,引入更高级的Python
Vamei
2018/01/18
9550
Python应用02 Python服务器进化
python web开发 网络编程 HTTP协议、Web服务器、WSGI接口
注:由于 HTML 里面写了很多下载的 css 文件地址,路径总是报错,最后还是 建议引用 CDN 写法,相关库地址查询https://www.bootcdn.cn/
Michael阿明
2022/01/07
1.1K0
python web开发 网络编程 HTTP协议、Web服务器、WSGI接口
用Python编写一个简单的Http S
原文地址:Write a simple HTTP server in Python http://www.acmesystems.it/python_httpd 例子中源码: https://github.com/tanzilli/playground/tree/master/python/httpserver
py3study
2020/01/07
3.1K0
用 Python 实现简易 Web 服务器
花下猫语:上篇文章推荐了一本神书《500 Lines or Less》(点此阅读),有几位读者留言问是否有中文版。很遗憾,还没有。不过我在文中也说了,Github 上有个翻译计划,已收录了 10 几篇译文。这些文章的代码量虽然不多,但是因为讲解的内容很详细,所以篇幅都很长。今天就先给大家分享其中一篇吧。如果你感兴趣的话,上篇文章末尾附了链接,可去查看。
Python猫
2019/07/22
2K0
自己动手写Web服务器(一)简单的静态服务器
前几天开始看《How Tomcat Works》,因为有人推荐要研究tomcat源代码,看这本书是很有帮助的。
the5fire
2019/02/28
1.4K0
用python搭个web服务器玩玩(一)
如果你想成为一个优秀的开发者,你应该对日常使用的软件系统的内部结构有深入的理解,包括编程语言、数据库及操作系统、Web 服务器及 Web 框架。而且,为了更好更深入地理解这些系统,你应当从头开始,用一砖一瓦来重新构建这个系统。 web服务器是什么 要构建自己的web服务器,首先要知道Web 服务器是什么?下面就是一个典型的web服务器,相信大家在生活中都使用过: 简而言之,web服务器是一个运行的网络服务器(也就是一个软件),等待客户端向其发送请求。当它接收请求后,会生成响应,并回送至客户端。客户端和服
企鹅号小编
2018/02/26
1.4K0
用python搭个web服务器玩玩(一)
用 Python 实现一个简单的 Web 服务器
Web 服务器是支持 HTTP 协议的服务器,它可以接收客户端的请求并返回相应的数据。Python 提供了多种方式来实现一个简单的 Web 服务器,本文将详细介绍如何使用 Python 创建一个基本的 Web 服务器,并展示其基本功能。
网络技术联盟站
2023/07/13
5.7K0
简单http和https服务器pytho
工作经常要用到测试http和https协议,这里写了两个简单的脚本实现简单的http服务器和https服务器。
py3study
2020/01/07
7370
python网络-静态Web服务器案例(29)
说明:index.html在html文件夹中,html文件夹和static_web_server.py在同目录
Se7eN_HOU
2019/06/26
6390
python网络-静态Web服务器案例(29)
用Python socket实现一个简单的http服务器(post 与get 的区别)、CGIHTTPServer 简单应用
废话不多说,前面实现过使用linux c 或者python 充当客户端来获取http 响应,也利用muduo库实现过一个简易http服务器,现在来实现一个python版
bear_fish
2018/09/20
2.2K0
用Python socket实现一个简单的http服务器(post 与get 的区别)、CGIHTTPServer 简单应用
[PYTHON] 核心编程笔记(20.W
urlparse(urlstr, defProtSch=None, allowFrag=None)
py3study
2020/01/08
4490
Python Web Flask源码解读(一)——启动流程
WebServerGatewayInterface 它由 Python标准定义的一套 WebServer与 WebApplication的接口交互规范。
阳仔
2019/07/30
9460
Python Web Flask源码解读(一)——启动流程
python网络-动态Web服务器案例(30)
PythonWeb服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是Python应用程序或框架和Web服务器之间的一种接口,
Se7eN_HOU
2019/06/26
1.3K0
python网络-动态Web服务器案例(30)
使用 python 快速搭建http服务 传输服务,下载服务器资源
python2 使用 python -m SimpleHTTPServer 快速搭建http服务 python3 使用 python -m httpserver 快速搭建http服务 摘要: 在 Linux 服务器上或安装了 Python 的机器上,可以使用 nohup python -m SimpleHTTPServer [port] & 快速搭建一个http服务。
98k
2018/11/09
1.9K0
推荐阅读
相关推荐
《Python入门》第一个Python
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验