2013-11-25 50 views
1

想知道是否有人可以推斷以下之間的區別?另外爲什麼你會用另一個呢?這些python web服務器請求有什麼區別?

urllib.request.urlopen 
urllib.request.Request 
HTTPConnection.request 

我正在使用python 3.2。我想了解如何在網絡中使用python,但文檔對解釋事物沒有幫助。

回答

1

urllib.request.urlopen向服務器發送請求並返回結果。這通常是您請求的文件/網站。所以,下面的代碼將打印請求文件的內容:

import urllib.request 
r = urllib.request.urlopen('http://example.com/some_file.stuff') 
print(r.read()) 

但urllib.request.Request只是表示將被髮送到服務器,以獲得您想要的數據的數據。因此,上面的示例可以重寫爲:

import urllib.request 
req = urllib.request.Request('http://example.com/some_file.stuff') 
r = urllib.request.urlopen(req) 
print(r.read()) 

HTTPConnection做了一些不同的事情。它只是連接到服務器,然後讓你負責完成剩下的任務(無論你想在服務器上做什麼,請求文件等),而不需要請求特定的文件。 urlopen會打開並提取您請求的文件。所以HTTPConnection更通用,但在大多數情況下,urllib.request.urlopen應該足夠了。