python 简单的web服务器

     最近在看python相关的东西,在看到python web的时候,居然需要自己编写Web服务器,不得不说句,python是个奇怪的东西-_-

python构建最简单的Web服务器

  python自带的包,可以构建一个服务器,首先进去一个文件夹,作为服务器的根目录,比如D:

   命令是:python -m 模块名  端口号,比如 

python -m SimpleHTTPServer 8080
然后就可以在浏览器输入  localhost:8080访问了


出现这个情况,是因为没有默认的页面,手动添加一个index.html就可以看到正常效果了(记得是在根目录下)


这里的“Web服务器模块”有如下三种:

BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。

SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。

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


自定义处理程序

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

代码如下qr.py:

#coding=UTF-8
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对象,其中r是raw的意思,表示对字符串不进行转义  print("\bhi")-->hi print(r"\bhi")-->\bhi
	pattern = re.compile(r'/qr\?s=([^\&]+)\&qr=Show\+QR')
	# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
	match = pattern.match(self.path)
	print(self.path)
	qrImg = ''
		
	if match:
		# 使用Match获得分组信息,match.group(1)是url后面的参数,match.group(0)是url本身。。。
		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)) 
		print(qrImg)

	self.protocal_version = 'HTTP/1.1'	#设置协议版本
	self.send_response(200)	#设置响应状态码
	self.send_header("Contect", "Welcome")	#设置响应头
	self.end_headers()
	self.wfile.write(templateStr % qrImg)	#输出响应内容
	
#启动服务函数
def start_server(port):
    http_server = HTTPServer(('', int(port)), TestHTTPHandler)
    http_server.serve_forever()	#设置一直监听并接收请求

#os.chdir('d:')	#改变工作目录到 static 目录
start_server(8080)	#启动服务,监听8080端口

进入qr.py,执行python qr.py


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



扫码看看



posted @ 2018-01-14 21:46  Bug开发攻城狮  阅读(413)  评论(0编辑  收藏  举报