Python 中從 URL 獲取資料

Vaibhav Vaibhav 2022年5月17日
Python 中從 URL 獲取資料

URL 或統一資源定位符是指向 Internet 上某些資源的有效且唯一的 Web 地址。該資源可以是簡單的文字檔案、zip 檔案、exe 檔案、視訊、影象或網頁。

在網頁的情況下,獲取 HTML 或超文字標記語言內容。本文將展示如何使用 Python 從 URL 獲取此 HTML 或超文字標記語言資料。

使用 Python 中的 requests 模組從 URL 獲取資料

Python 有一個 requests 模組,可以輕鬆傳送 HTTP(超文字傳輸​​協議)請求。此模組可用於從有效 URL 中獲取 HTML 內容或任何內容。

requests 模組有一個 get() 方法,我們可以使用它從 URL 中獲取資料。此方法接受一個 url 作為引數並返回一個 requests.Response 物件。

這個 requests.Response 物件包含有關伺服器對傳送的 HTTP 請求的響應的詳細資訊。如果一個無效的 URL 被傳遞給這個 get() 方法,get() 方法將丟擲一個 ConnectionError 異常。

如果你不確定 URL 的有效性,強烈建議使用 tryexcept 塊。只需將 get() 方法呼叫包含在 tryexcept 塊中。這將在接下來的示例中進行描述。

現在,讓我們瞭解如何使用此函式從有效 URL 中獲取 HTML 內容或任何資料。相同的參考下面的程式碼。

要了解有關 requests.Response 物件的更多資訊,請參閱官方文件此處

import requests

try:
    url = "https://www.lipsum.com/feed/html"
    r = requests.get(url)
    print("HTML:\n", r.text)
except:
    print("Invalid URL or some error occured while making the GET request to the specified URL")

輸出:

HTML:
...

請注意,... 表示從 URL 獲取的 HTML 內容。由於 HTML 內容太大,因此未在上面的輸出中顯示。

如果 URL 錯誤,上面的程式碼將執行 except 塊內的程式碼。下面的程式碼描述了它是如何工作的。

import requests

try:
    url = "https://www.thisisafaultyurl.com/faulty/url/"
    r = requests.get(url)
    print("HTML:\n", r.text)
except:
    print("Invalid URL or some error occured while making the GET request to the specified URL")

輸出:

Invalid URL or some error occurred while making the GET request to the specified URL

出於安全目的,某些網頁不允許 GET 請求獲取其內容。在這種情況下,我們可以使用 requests 模組中的 post() 方法。

顧名思義,此方法將 POST 請求傳送到有效的 URL。該方法接受兩個引數,即 urldata

url 是目標 URL,而 data 接受鍵值對形式的標題詳細資訊字典。標頭詳細資訊可以是 API 或應用程式程式設計介面金鑰、CSRF 或跨站點請求偽造令牌等。

這種情況下的 Python 程式碼如下。

import requests

try:
    url = "https://www.thisisaurl.com/that/accepts/post/requests/"
    payload = {
        "api-key": "my-api-key",
        # more key-value pairs
    }
    r = requests.post(url, data = payload)
    print("HTML:\n", r.text)
except:
    print("Invalid URL or some error occured while making the POST request to the specified URL")
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相關文章 - Python URL