python urllib

urllib ライブラリーの概要
urllib ライブラリーは、PythonでHTTPリクエストを行うための標準的なライブラリーです。Webページのデータを取得したり、URLのパースやエンコード、デコードなどを行うことができます。特にWebスクレイピングやAPIの利用において、データをやり取りする際に非常に役立ちます。

urllib の主要メソッドとその使い方

  1. urllib.request.urlopen
    URLに対してリクエストを送り、その応答を取得します。

import urllib.request

# 使用例
url = 'http://example.com'
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')
print(html)
  1. urllib.parse.urlencode
    辞書型のデータをURLエンコードして、クエリ文字列を作成します。

import urllib.parse

# 使用例
params = {'name': 'John Doe', 'age': 30}
query_string = urllib.parse.urlencode(params)
print(query_string)  # 出力: 'name=John+Doe&age=30'
  1. urllib.parse.urlparse
    URLをパースして、構成要素(スキーム、ネットロケーション、パス、クエリ文字列など)に分解します。

import urllib.parse

# 使用例
url = 'http://example.com/path/to/page?name=John&age=30'
parsed_url = urllib.parse.urlparse(url)
print(parsed_url.scheme)  # 出力: 'http'
print(parsed_url.netloc)  # 出力: 'example.com'
print(parsed_url.path)    # 出力: '/path/to/page'
  1. urllib.parse.urljoin
    ベースURLと相対URLを結合して完全なURLを生成します。

import urllib.parse

# 使用例
base_url = 'http://example.com/path/to/'
relative_url = 'page.html'
full_url = urllib.parse.urljoin(base_url, relative_url)
print(full_url)  # 出力: 'http://example.com/path/to/page.html'
  1. urllib.error.URLError
    HTTPリクエストが失敗した場合に発生するエラーです。

import urllib.request
import urllib.error

# 使用例
try:
    response = urllib.request.urlopen('http://invalid-url.com')
except urllib.error.URLError as e:
    print(e.reason)

活用場面、活用方法

Webページの内容を取得する場合や、APIからデータを取得する場合に使用します。
URLパラメータのエンコードやパースを行う際に、Webアプリケーションの開発やデータ収集の処理が簡単になります。
URLを解析して、異なるURLを組み合わせたり、特定の部分を取得する場合に利用します。
このライブラリーを使えば、こんなことができる!
WebページやAPIからのデータ取得
URLクエリパラメータの生成と解析
ベースURLに相対パスを追加して完全なURLを作成
HTTPリクエストのエラーハンドリング

ライブラリーを使わずに書いたコード

例えば、Webページの内容を取得する場合、urllibを使わずに低レベルのソケット操作で実装すると複雑になります:

import socket

# 使用例
host = 'example.com'
path = '/'

request = f"GET {path} HTTP/1.1\r\nHost: {host}\r\n\r\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, 80))
s.sendall(request.encode())

response = s.recv(4096)
print(response.decode())
s.close()

ライブラリーを使って実装したコード

urllibを使うと、Webページの取得が非常に簡単になります:

import urllib.request

url = 'http://example.com'
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')
print(html)

このように、urllibライブラリーを使用すると、HTTPリクエストやURL操作に関するコードがシンプルになり、簡単に扱うことができます。

いいなと思ったら応援しよう!