跳至內容

Python/Internet

維基教科書,自由的教學讀本

與 Python 捆綁在一起的 urllib 模塊可用於 Web 交互。此模塊為 Web URL 提供類似文件的接口。

以字符串形式獲取頁面文本

[編輯]

讀取網頁內容的示例

import urllib.request as urllib
pageText = urllib.urlopen("http://www.spam.org/eggs.html").read()
print(pageText)

逐行處理頁面文本:

import urllib.request as urllib
for line in urllib.urlopen("https://en.wikibooks.org/wiki/Python_Programming/Internet"):
  print(line)

使用Get或Post方法:

import urllib.request as urllib
params = urllib.urlencode({"plato":1, "socrates":10, "sophokles":4, "arkhimedes":11})

# Using GET method
pageText = urllib.urlopen("http://international-philosophy.com/greece?%s" % params).read()
print(pageText)

# Using POST method
pageText = urllib.urlopen("http://international-philosophy.com/greece", params).read()
print(pageText)

下載文件

[編輯]

要將互聯網上的頁面內容直接保存到文件中,您可以讀取它並將其作為字符串保存到文件對象中:

import urllib2
data = urllib2.urlopen("http://upload.wikimedia.org/wikibooks/en/9/91/Python_Programming.pdf", "pythonbook.pdf").read() # not recommended as if you are downloading 1gb+ file, will store all data in ram.
file =  open('Python_Programming.pdf','wb')
file.write(data)
file.close()

這將從 這裏 下載文件並將其保存到硬盤上的文件「pythonbook.pdf」。

其他函數

[編輯]

urllib 模塊包含其他函數,這些函數在編寫使用互聯網的程序時可能會有所幫助:

>>> plain_text = "This isn't suitable for putting in a URL"
>>> print(urllib.quote(plain_text))
This%20isn%27t%20suitable%20for%20putting%20in%20a%20URL
>>> print(urllib.quote_plus(plain_text))
This+isn%27t+suitable+for+putting+in+a+URL

上面描述的 urlencode 函數將鍵值對字典轉換為查詢字符串以傳遞給 URL,quote 和 quote_plus 函數對普通字符串進行編碼。quote_plus 函數使用加號表示空格,用於提交表單字段的數據。unquote 和 unquote_plus 函數執行相反的操作,將 urlencoded 文本轉換為純文本。

外部連結

[編輯]