今回はスクレイピングを行う上で避けて通れないURL操作についての記事を作成します。
Contents
絶対パスと相対パスを結合する
urllib.parseのurljoinを使用します。
1 2 3 4 5 6 7 8 |
from urllib.parse import urljoin if __name__ == "__main__": base_path = 'https://villhell.com/wp/' relative_path = './2019/07/30/python-url' absolute_path = urljoin(base_path, relative_path) print(absolute_path) #https://villhell.com/wp/2019/07/30/python-url |
筆者のブログのトップページのURLとこの記事の相対パスを結合します。
ただ基になるURLと相対パスを渡してやれば絶対パスを返してくれます。
この関数はスクレイピングの時に重宝されると思います。
urlparseを使用してURLを解析
Urlの中身を解析するurllib.parseのurlparseを使用します!
前回の絶対パスと相対パスを結合するの項目で作成されたabsolute_pathを解析します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from urllib.parse import urlparse parse = urlparse(absolute_path) print('scheme -> ' + parse.scheme) print('netloc -> ' + parse.netloc) print('path -> ' + parse.path) print('query -> ' + parse.query) print('params -> ' + parse.params) print('fragment -> ' + parse.fragment) #scheme -> https #netloc -> villhell.com #query -> #path -> /wp/2019/07/30/python-url #params -> #fragment -> |
- 出力結果は
scheme -> https
netloc -> villhell.com
query ->
path -> /wp/2019/07/30/python-url
params ->
fragment ->
正直解析してもあまり意味なかった。結果としてはこうなりますという参考までに。
os.path.splitを使用してファイル名を取得
urllib.parseとは直接関係はありませんが、これもスクレイピングでよく使うので記載。
os.path.splitにURLを渡してあげるとパスを分割することができます。
1 2 3 4 5 6 |
import os base_path = 'https://villhell.com/wp/a.html' split_path = os.path.split(base_path) print(split_path[1]) #a.html #ちなみにsplit_path[0]にはhttps://villhell.com/wpが入っている |
os.path.splitextを使用して拡張子を取得
これもついでに記載。
os.path.splitextにURLを渡してあげると拡張子のところで分割してくれます。
1 2 3 4 |
import os base_path = 'https://villhell.com/wp/a.html' print(os.path.splitext(base_path)) #('https://villhell.com/wp/a', '.html') |
文字列操作系は重宝するので覚えておいて損はないです!