Webスクレイピングをする際、URL指定を行う必要があります。URLの取り扱いは「urllib.parse」モジュールで簡単に操作できます。ここでは「urllib.parse」モジュールの解析について解説しています。
urllib.parseモジュールとは
「urllib.parse」はurlの構成解析、分割、組合せが簡単にできるモジュールです。
URLの解析 ⇒ urlparse
urllib.parse.urlparse
本サイトを解析してみます。
from urllib.parse import urlparse
o = urlparse('https://www.hobby-happymylife.com/')
print(str(o))
#ParseResult(scheme='https', netloc='www.hobby-happymylife.com', path='/', params='', query='', fragment='')
「scheme」はhttpsやhttpなどを示すものです。「netloc」はサイトの住所を示しています。「path」は階層を示しています。空文字列のparams、query、fragmentは省略します。以下を参照してください。
属性 | インデックス | 値 | 指定されなかった場合の値 |
scheme | 0 | URL スキーム | scheme パラメータ |
netloc | 1 | ネットワーク上の位置 | 空文字列 |
path | 2 | 階層的パス | 空文字列 |
params | 3 | 最後のパス要素に対するパラメータ | 空文字列 |
query | 4 | クエリ要素 | 空文字列 |
fragment | 5 | フラグメント識別子 | 空文字列 |
username | ユーザ名 | None | |
password | パスワード | None | |
hostname | ホスト名 (小文字) | None | |
port | ポート番号を表わす整数 (もしあれば) | None |
urllib.parse
を元に作成URLの絶対パス化 ⇒ urljoin
from urllib.parse import urljoin
url = 'https://www.hobby-happymylife.com/'
url_python=urljoin(url, '%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/python/')
url_png=urljoin(url,/wp-content/uploads/2020/01/%E7%8B%AC%E5%AD%A6%E6%8C%BF%E5%85%A5%E5%9B%B3.png)
urlにこのサイトのHomeのurlを入れて、python入門までのパスを引数とし、urljoinで指定して組合せています。
次に同ページの写真を指定したい場合も同様に、絶対パスにしています。
相対パスを予め指定しておくて、後から様々な要素にアクセスしたいときに便利なのがurljoinです。
URLエンコード ⇒ urlencode
from urllib.parse import urlencode
query_params = {"name": "hoge", "page": 10}
encoded_params = urlencode(query_params)
print(encoded_params)
#name=hoge&page=10
クエリ文字列をURLエンコードしています。
これからスクレイピングの勉強を始めたい方には以下の書籍がおすすめです。基本的な技術やサンプルコードが多くあるので、勉強がし易いです。