Python の URL からデータを取得する

Vaibhav Vaibhav 2023年10月10日
Python の URL からデータを取得する

URL または Uniform Resource Locator は、インターネット上のリソースを指す有効で一意の Web アドレスです。このリソースには、単純なテキストファイル、zip ファイル、exe ファイル、ビデオ、画像、または Web ページがあります。

Web ページの場合、HTML またはハイパーテキストマークアップ言語のコンテンツがフェッチされます。この記事では、Python を使用して URL からこの HTML またはハイパーテキストマークアップ言語データを取得する方法を示します。

Python の requests モジュールを使用して URL からデータを取得する

Python には、HTTP(Hypertext Transfer Protocol)リクエストを簡単に送信する requests モジュールがあります。このモジュールを使用して、有効な URL から HTML コンテンツまたは任意のコンテンツをフェッチできます。

requests モジュールには、URL からデータをフェッチするために使用できる get() メソッドがあります。このメソッドは、引数として url を受け入れ、requests.Response オブジェクトを返します。

この requests.Response オブジェクトには、送信された HTTP リクエストに対するサーバーの応答に関する詳細が含まれています。この get() メソッドに無効な URL が渡されると、get() メソッドは ConnectionError 例外をスローします。

URL の有効性が不明な場合は、try ブロックと except ブロックを使用することを強くお勧めします。get() メソッド呼び出しを try および except ブロックで囲むだけです。これは、次の例で示されます。

ここで、この関数を使用して、有効な 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

一部の Web ページでは、セキュリティ上の理由から、GET リクエストでコンテンツを取得することはできません。このような場合、requests モジュールの post() メソッドを使用できます。

名前が示すように、このメソッドは POST リクエストを有効な URL に送信します。このメソッドは、urldata の 2つの引数を受け入れます。

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
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.

関連記事 - Python URL