与えられたウェブサイトのアドレス、例えば
http://www.example.com/page1/#
https://subdomain.example2.co.uk/asdf?retrieve=2
Rでルート ドメインを返すにはどうすればよいですか。
example.com
example2.co.uk
私の目的のために、ルートドメインを構造を持つように定義します
example_name.public_suffix
ここで、example_name は「www」を除外し、public_suffix は次のリストにあります。
https://publicsuffix.org/list/effective_tld_names.dat
これはまだ最良の正規表現ベースのソリューションですか:
https://stackoverflow.com/a/8498629/2109289
R次のようなパブリック サフィックス リストに基づいてルート ドメインを解析するものについてはどうでしょうか。
http://simonecarletti.com/code/publicsuffix/
編集済み:リチャードのコメントに基づいて追加情報を追加
を使用するXML::parseURIと、最初の「//」と「/」の間のものを返すようです。例えば
> parseURI("http://www.blog.omegahat.org:8080/RCurl/index.html")$server
[1] "www.blog.omegahat.org"
したがって、問題はR、URI からパブリック サフィックスを返すことができる関数を持つこと、またはパブリック サフィックス リストに次のアルゴリズムを実装することになります。
- ドメインをすべてのルールと照合し、一致するルールをメモします。
- 一致するルールがない場合、優先ルールは「*」です。
- 複数のルールが一致する場合、優勢なルールは例外ルールです。
- 一致する例外ルールがない場合、最も多くのラベルを持つルールが優先ルールになります。
- 優勢なルールが例外ルールである場合は、一番左のラベルを削除して変更します。
- パブリック サフィックスは、一般的なルールのラベル (ドットで結合) と直接一致するドメインからのラベルのセットです。
- 登録済みまたは登録可能なドメインは、パブリック サフィックスと 1 つの追加ラベルです。