前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Python建立最简单的web服务器

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

作者头像
py3study
发布2020-01-10 17:07:29
9.1K1
发布2020-01-10 17:07:29
举报
文章被收录于专栏:python3python3

第一个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
复制
 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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用Python建立最简单的web服务器
  • 自定义处理程序
  • 运行访问
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档