はじめに
正規表現などを屈指しなくても、簡単にURLやメールアドレスを抜き取ることができます。
使用するライブラリ
URLExtract
標準ライブラリではありませんのでインストールが必要になります。
pip install urlextract
urlextract
Collects and extracts URLs from given text.
ドキュメント
今回、ご紹介する機能以下にもありますので、詳しくはドキュメントを参照してください。
Welcome to urlextract’s documentation! — urlextract 1.8.0 documentation
URLExtractの仕様
- 文字列の中にTLD(トップレベルドメイン)が存在するかチェックします。
- TLDが見つかった場合、その位置から終わりを検索します。
終わりの判断は、空白、コンマ、一重引用符、または二重引用符です。
全角に注意が必要です。
文字列からURLを抽出
extractor.find_urls(txt)
- URLの検索結果をリスト型で返します。
- オプション(パラメータ)には以下の3種類があります。
only_unique=False
True
にすると、一意のURLのみを返します。
check_dns=False
True
にすると、結果もドメインを有効かフィルタリングします。
get_indices=False
True
にすると、検索されたURLの位置(インデックス)をタプル型で返します。
import pprint from urlextract import URLExtract txt = """ 以下がURLになります。 ! https://goo.gl/maps/iWtCd4xT48GCtg9n8 ! http://localhost:8888/notebooks/ ! https://github.com/lipoja/URLExtract/blob/master/docs/index.rst ! https://www.apple.com/jp/(日本語サイト ! https://日本語.jp ! https://www.icloud.com 以上です。 """ extractor = URLExtract() urls = extractor.find_urls(txt) pprint.pprint(urls) # ['https://goo.gl/maps/iWtCd4xT48GCtg9n8', # 'http://localhost:8888/notebooks/', # 'https://github.com/lipoja/URLExtract/blob/master/docs/index.rst', # 'https://www.apple.com/jp/(日本語サイト', # 'https://www.icloud.com']
結果から、以下の注意が必要になります。
- 日本語が入ったURLに対応しているが、日本語ドメインは対応していない。
【
や、
などは認識しない。
ローカルホストを除外する場合
予めクラスのオプションを指定する必要があります。
extractor.extract_localhost=False
import pprint from urlextract import URLExtract txt = """ 以下がURLになります。 ! https://goo.gl/maps/iWtCd4xT48GCtg9n8 ! http://localhost:8888/notebooks/ ! https://github.com/lipoja/URLExtract/blob/master/docs/index.rst ! https://www.apple.com/jp/(日本語サイト ! https://日本語.jp ! https://www.icloud.com 以上です。 """ extractor = URLExtract() extractor.extract_localhost=False urls = extractor.find_urls(txt) pprint.pprint(urls) # ['https://goo.gl/maps/iWtCd4xT48GCtg9n8', # 'https://github.com/lipoja/URLExtract/blob/master/docs/index.rst', # 'https://www.apple.com/jp/(日本語サイト', # 'https://www.icloud.com']
文字列からメールアドレスも抽出
基本的にはURLと同じですが、予めクラスのオプションを指定する必要があります。
extractor.extract_email=True
- デフォルトは
False
になっています。
import pprint from urlextract import URLExtract txt = """ 以下がURLになります。 ! https://www.google.co.jp ! https://www.bing.com ! abc@google.co.jp 以上です。 """ extractor = URLExtract() extractor.extract_email=True urls = extractor.find_urls(txt) pprint.pprint(urls) # ['https://www.google.co.jp', 'https://www.bing.com', 'abc@google.co.jp']
メールアドレスだけでなく、URLも抽出されます。
コメント