使用Python的urllib.request模組訪問網際網路
介紹
我們使用Python中的**urllib.request**模組來訪問和開啟URL,這些URL通常使用HTTP協議。
該介面對於初學者來說也非常簡單易用;它使用**urlopen**函式,可以使用各種不同的協議獲取各種URL。
當我們開始使用它的各種功能時,您將更好地理解我們正在處理的內容。那麼,讓我們開始吧。
開始
**urllib**庫與Python一起打包提供。因此,您無需單獨安裝它,但如果您想將其新增到您的環境中並且您還沒有它,您可以使用pip包管理器安裝它。
啟動您的終端並使用以下程式碼:
pip install urllib
安裝完成後,您可以匯入正確的模組並開始編寫您的指令碼。
檢視urllib.request
我們最常使用urllib.request來開啟和讀取資料或頁面的原始碼。如果您嘗試從API檢索資料,這將特別有用。例如:
import urllib.request request_url = urllib.request.urlopen('https://official−joke−api.appspot.com/random_ten')
以上程式碼行將開啟笑話API並讀取其資料。
假設您想列印其內容,您可以使用:
print(request_url.read())
**注意** - 這將以位元組格式打印出值。如果您想要純文字,請使用decode函式。
print(request_url.read().decode())
您甚至可以儲存來自API的資料,然後稍後使用正則表示式解析它以僅獲取必要的資料。
示例
import urllib.request data = urllib.request.urlopen('https://official−joke−api.appspot.com/random_ten') data = data.read().decode() print(data) file = open("content.txt", "w+") file.write(data) file.close()
**注意** -您可以訪問使用各種協議的URL,包括FTP、HTTPS等。**urlopen**函式對所有不同的協議的工作方式完全相同。
向URL傳送資料
如果您正在使用公共閘道器介面,您可能希望向URL傳送資料。這與HTTP傳送POST請求的方式類似。
您可以使用urllib.request和urllib.parse模組來實現此目的。
讓我們首先匯入模組。
示例
import urllib.parse import urllib.request url = 'http://www.google.com/cgi-bin/register.cgi' values = {'name' : 'S Vijay Balaji', language' : 'Python' } data = urllib.parse.urlencode(values) data = data.encode('ascii') req = urllib.request.Request(url, data) with urllib.request.urlopen(req) as response: the_page = response.read()
這應該打印出從提供的URL獲取的原始碼。
結論
urllib.request模組非常有用,因為我們可以檢索網際網路資源並從中獲取資料。
在從API解析資料或讀取網頁原始碼以抓取其內容時,它非常方便。
使用urllib.request從各種API提取資料的專案 - https://github.com/SVijayB/Steam_WebScraper。
urllib.request模組還有許多其他函式。如果您好奇並想了解更多資訊,您可以檢視其官方文件 - https://docs.python.club.tw/3/library/urllib.request.html。