Python Web程序搭建簡單的Web服務(wù)器
上一篇講了《Python入門》Windows 7下Python Web開發(fā)環(huán)境搭建筆記,接下來講一下Python語言Web服務(wù)的具體實(shí)現(xiàn):第一個(gè)Python Web程序——簡單的Web服務(wù)器。
與其它Web后端語言不同,Python語言需要自己編寫Web服務(wù)器。
如果你使用一些現(xiàn)有的框架的話,可以省略這一步;
如果你使用Python CGI編程的話,也可以省略這一步;
用Python建立最簡單的web服務(wù)器
利用Python自帶的包可以建立簡單的web服務(wù)器。在DOS里cd到準(zhǔn)備做服務(wù)器根目錄的路徑下,輸入命令:
python -m Web服務(wù)器模塊 [端口號,默認(rèn)8000]
例如:
python -m SimpleHTTPServer 8080
然后就可以在瀏覽器中輸入
http://localhost:端口號/路徑
來訪問服務(wù)器資源。
例如:
http://localhost:8080/index.htm(當(dāng)然index.htm文件得自己創(chuàng)建)
其他機(jī)器也可以通過服務(wù)器的IP地址來訪問。
這里的“Web服務(wù)器模塊”有如下三種:
BaseHTTPServer: 提供基本的Web服務(wù)和處理器類,分別是HTTPServer和BaseHTTPRequestHandler。
SimpleHTTPServer: 包含執(zhí)行GET和HEAD請求的SimpleHTTPRequestHandler類。
CGIHTTPServer: 包含處理POST請求和執(zhí)行CGIHTTPRequestHandler類。
自定義處理程序
Google在http://chart.apis.google.com 上提供了一個(gè)將表單數(shù)據(jù)自動轉(zhuǎn)換為圖表的服務(wù)。不過,該服務(wù)很難交互, 因?yàn)槟阈枰獙?shù)據(jù)作為查詢放到URL中。此程序?yàn)橐环N數(shù)據(jù)格式提供了更好的的接口: 給定一小段文本,它將調(diào)用圖表服務(wù)器來生成二維碼(QR碼),這是一種編碼文本的點(diǎn)格矩陣。 該圖像可被你的手機(jī)攝像頭捕獲,并解釋為一個(gè)字符串,比如URL, 這樣就免去了你在狹小的手機(jī)鍵盤上鍵入U(xiǎn)RL的麻煩。
以下為完整的程序:
import os #Python的標(biāo)準(zhǔn)庫中的os模塊包含普遍的操作系統(tǒng)功能
import re #引入正則表達(dá)式對象
import urllib #用于對URL進(jìn)行編解碼
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler #導(dǎo)入HTTP處理相關(guān)的模塊
#自定義處理程序,用于處理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> '''
# 將正則表達(dá)式編譯成Pattern對象
pattern = re.compile(r'/qr\?s=([^\&]+)\&qr=Show\+QR')
# 使用Pattern匹配文本,獲得匹配結(jié)果,無法匹配時(shí)將返回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' #設(shè)置協(xié)議版本
self.send_response(200) #設(shè)置響應(yīng)狀態(tài)碼
self.send_header("Welcome", "Contect") #設(shè)置響應(yīng)頭
self.end_headers()
self.wfile.write(templateStr % qrImg) #輸出響應(yīng)內(nèi)容
#啟動服務(wù)函數(shù)
def start_server(port):
http_server = HTTPServer(('', int(port)), TestHTTPHandler)
http_server.serve_forever() #設(shè)置一直監(jiān)聽并接收請求
os.chdir('static') #改變工作目錄到 static 目錄
start_server(8000) #啟動服務(wù),監(jiān)聽8000端口
運(yùn)行訪問
我這里將上面上代碼保存為:C:\Python\webserver\server1.py,使用UTF-8編碼;
打開命令行,切換到 C:\Python\webserver\ 目錄,
執(zhí)行:python server1.py

可能會彈出防火墻警告,點(diǎn)擊允許訪問。

在瀏覽器中訪問,查看效果,打開瀏覽器,輸入:http://localhost:8000/,結(jié)果如下圖:
在文本框中輸入一個(gè)URL,如(http://blog.csdn.net/testcs_dn),點(diǎn)擊Show QR,會生成一張二維碼的圖片

掃一掃這張二維碼看看吧

小結(jié)
與其它Web后端語言不同,Python語言需要自己編寫Web服務(wù)器;
但與Go語言相比,Python稍微有些難以上手。
這里只是編寫運(yùn)行一個(gè)簡單的例子,看看效果找找感覺。
雖然Python的大名已經(jīng)知道很久,但最近才真正的接觸,文中有不對的地方,有更好的方法還請前輩們多多指教!
2017-12-12更新
此示例的代碼在 Eclipse+pydev 環(huán)境中打開存在縮進(jìn)問題,需要 大家注意:

需要調(diào)了一下格式 就把下圖紅框中的代碼整體后移了一下:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Windows 下python3.8環(huán)境安裝教程圖文詳解
這篇文章主要介紹了Windows 下python3.8環(huán)境安裝教程圖文詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Python編程中實(shí)現(xiàn)迭代器的一些技巧小結(jié)
只談迭代器的話在Python中只是一個(gè)泛指的概念,具體的可以用yield、生成器表達(dá)式、iter等多種方式來構(gòu)建,這里我們整理了Python編程中實(shí)現(xiàn)迭代器的一些技巧小結(jié):2016-06-06
在GitHub Pages上使用Pelican搭建博客的教程
這篇文章主要介紹了在GitHub Pages上使用Pelican搭建博客的教程,Pelican是一個(gè)使用Python實(shí)現(xiàn)的開源博客系統(tǒng),需要的朋友可以參考下2015-04-04
Python requests timeout的設(shè)置
這篇文章主要介紹了Python requests timeout的設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Python讀取配置文件-ConfigParser的二次封裝方法
這篇文章主要介紹了Python讀取配置文件-ConfigParser的二次封裝方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Python文件操作實(shí)戰(zhàn)案例之用戶登錄
以前只是用c語言文件操作打過用戶登入,學(xué)了幾天的python我感覺我又行了,下面這篇文章主要給大家介紹了關(guān)于Python文件操作實(shí)戰(zhàn)案例之用戶登錄的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
70行Python代碼實(shí)現(xiàn)一個(gè)桌面自動翻譯工具
PySimpleGUI是一款很棒的自動化輔助模塊,讓你更輕松的實(shí)現(xiàn)日常任務(wù)的自動化。本文將利用PySimpleGUI編寫一個(gè)桌面自動翻譯工具,感興趣的可以了解一下2022-07-07

