URL からドメイン名を見つけるには、正規表現を使用して、対応するクラス ライブラリを探すことが最初に思いつきます。通常の解析の使用には多くの不完全な点があり、URL にはドメイン名が含まれており、ドメイン名のサフィックスは常に増加しています。 Google でいくつかの方法を見つけました。1 つは、Python の組み込みモジュールと正規表現を使用してドメイン名を解析する方法です。もう 1 つは、サードパーティが作成した解析モジュールを使用してドメイン名を直接解析する方法です。
解析対象の URL
urlparse + 通常のメソッドを使用します
topHostPostfix = (
'.com'、'.la'、'.io'、'.co'、'.info'、'.net'、'.org'、'.me'、'.mobi'、
'.us'、'.biz'、'.xxx'、'.ca'、'.co.jp'、'.com.cn'、'.net.cn'、
'.org.cn'、'.mx'、'.tv'、'.ws'、'.ag'、'.com.ag'、'.net.ag'、
'.org.ag'、'.am'、'.asia'、'.at'、'.be'、'.com.br'、'.net.br'、
'.bz'、'.com.bz'、'.net.bz'、'.cc'、'.com.co'、'.net.co'、
'.nom.co'、'.de'、'.es'、'.com.es'、'.nom.es'、'.org.es'、
'.eu'、'.fm'、'.fr'、'.gs'、'.in'、'.co.in'、'.firm.in'、'.gen.in'、
'.ind.in'、'.net.in'、'.org.in'、'.it'、'.jobs'、'.jp'、'.ms'、
'.com.mx'、'.nl'、'.nu'、'.co.nz'、'.net.nz'、'.org.nz'、
'.se'、'.tc'、'.tk'、'.tw'、'.com.tw'、'.idv.tw'、'.org.tw'、
'.hk'、'.co.uk'、'.me.uk'、'.org.uk'、'.vg'、".com.hk")
regx = r'[^.]+('+'|'.join([h.replace('.',r'.') for h in topHostPostfix])+')$'
パターン = re.compile(regx,re.IGNORECASE)
「--」*40 を印刷
URL 内の URL の場合:
パーツ = urlparse(url)
ホスト = Parts.netloc
m = pattern.search(ホスト)
res = m.group() if m else host
res でない場合は "unkonw" を出力します。else res
実行結果は次のとおりです:
基本的には許容されます
ドメイン名を解決するための urllib
「--」*40 を印刷
URL 内の URL の場合:
プロト、残り = urllib.splittype(url)
res、rest = urllib.splithost(rest)
res でない場合は "unkonw" を出力します else res
実行結果は次のとおりです:
さらに分析が必要な www. も提供します
サードパーティモジュール tld を使用します
「--」*40 を印刷
URL 内の URL の場合:
試してみてください:
in到账速度的)get_tld(url)
を印刷
e:
としての例外を除く
print "unkonw"
実行結果:
結果は許容範囲内です
使用できるその他の解析モジュール:
tld
tldextract
パブリックサフィックス