標籤:
python的web相關模組,有兩種不同的類型,urlparse和urllib,分別以不同的功能和相容性來處理URL,前者主要包括urlparse()、urlunparse()和urljoin(),後者可以使用urlopen()或urlretrive()建立web用戶端。urllib2模組是一個比urllib功能更加進階的模組。
web開發,無疑要用到統一資源定位器URL,URL格式如下:
prot_sch://net_loc/path:params?query#flag
prot_sch:網路協議或者下載規劃。
net_loc:伺服器位置,或許也有使用者資訊。
path:斜線/限定檔案或者通用閘道介面CGI應用程式的路徑。
params:選擇性參數。
query:串連符&串連索引值對。
flag:拆分文檔中的特殊錨。
其中,net_loc可以進一步拆分成多個組件,如下:
user:[email protected]:port
user:登入名稱。
passwd:使用者的密碼。
host:web伺服器啟動並執行機器名或地址,是個必須欄位。
port:連接埠號碼,預設80。
urlparse模組——
urlparse(urlstr,defProtSch=None,allowFrag=None):將URL字串拆分成一個6元組,如果在urlstr中沒有給定協議或者規劃將使用defProtSch,參數allowFrag決定是否允許有URL零組件。
urlunparse(urltup):與urlparse()功能相反。
urljoin(baseurl,newurl,allowFrag=None):將URL的基組件baseurl和新組件newurl拼合成一個完整的URL。
urllib模組——
urlopen(urlstr,postQueryData=None):開啟urlstr所指向的URL,如果沒有給定協議或者下載規劃,或者檔案規劃早已傳入,urlopen()則會開啟一個本地的檔案。開啟成功時,返回一個檔案類型對象,支援的方法包括read([bytes])、readline()、readlines()、close()、fileno()、info()、geturl()等。
urlretrieve(urlstr,localfile=None,downloadStatusHook=None):除了像urlopen()一樣從URL中讀取內容,還可以方便地將urlstr定位到的整個HTML檔案下載到本地的硬碟上,可以將下載後的資料存成一個本地檔案或者一個臨時檔案,如果該檔案已經被複製到本地或者已經是一個本地檔案,後續的下載動作將不會發生,如果可能,downloadStatusHook這個函數將會在每塊資料下載或傳輸完成後被調用。
quote(urldata,safe=’/’):擷取URL資料,並將其編碼,從而適用URL字串,尤其是一些不能被列印的或者不被web伺服器作為有效URL接收的特殊字元串必須被轉換,quote_plus()功能類似,不同的是還可以將空格編碼成加+號。
unquote()、unquote_plus():與quote*()功能相反。
urlencode(dict):接收字典的鍵-值對,並將其編譯成CGI請求的URL字串的一部分,不同的鍵-值對以符號&劃分。
urllib2模組——
urllib2可以處理更複雜URL的開啟問題,如登入認證等。
網路爬蟲——
web編程的一個常見應用便是網路爬蟲,這些程式基於不同的目的而在網際網路上搜尋和下載頁面,例如,為搜尋引擎建索引、離線瀏覽、下載並儲存記錄或架構、web頁面緩衝等等。
cgi——
CGI,即Common Gateway Interface,通用閘道介面,協助web伺服器處理用戶端資料,它代表了在一個web伺服器和能夠處理使用者表單、產生並返回動態HTML頁的應用程式間的互動。不過由於CGI的局限性,現在許多典型的web應用產品已經不再使用CGI了。
cgi模組可以協助我們建立CGI應用程式,首先需要安裝一個web伺服器,將其配置成可以處理python的CGI請求的模式,然後讓web伺服器訪問CGI指令碼。如果是一個簡單的伺服器,可以使用python內建的web伺服器,命令如下:
$python -m CGIHTTPServer
如上命令將會在當前機器的目前的目錄下建立一個連接埠號碼為8000的web伺服器,然後可以在啟動這個服務的目錄下建立一個Cgi-bin,將python的CGI指令碼放到這個目錄中或者是一些HTML檔案直接放在啟動這個服務的目錄下,接著就可以在地址欄中輸入這些地址類訪問web網站了,如下:
http://localhost:8000/mypython.htm
http://localhost:8000/cgi-bin/pythons.py
建立一個基於HTTP的web服務,一個基本的伺服器和一個處理器是必備的,伺服器在用戶端和伺服器端完成必要的HTTP互動,處理器用來處理用戶端的請求,並返回適當的檔案,如靜態文本或者由CGI產生的動態檔案,處理器的複雜性決定了web伺服器的複雜程度。python標準庫提供了三種不同的處理器,分別在對應的模組可以找到,如下:
BaseHTTPServer模組:提供基本的web服務和處理器類,分別是HTTPServer和BaseHTTPRequestHandler處理器。
SimpleHTTPServer模組:包含執行GET和HEAD請求的SimpleHTTPRequestHandler類。
CGIHTTPServer模組:包含處理POST請求和執行CGI的CGIHTTPRequestHandler類。
python的web編程