Python は URL からドメイン名を抽出するためのいくつかのメソッドを実装しています

WBOY
リリース: 2016-06-16 08:41:43
オリジナル
1932 人が閲覧しました

URL からドメイン名を見つけるには、正規表現を使用して、対応するクラス ライブラリを探すことが最初に思いつきます。通常の解析の使用には多くの不完全な点があり、URL にはドメイン名が含まれており、ドメイン名のサフィックスは常に増加しています。 Google でいくつかの方法を見つけました。1 つは、Python の組み込みモジュールと正規表現を使用してドメイン名を解析する方法です。もう 1 つは、サードパーティが作成した解析モジュールを使用してドメイン名を直接解析する方法です。

解析対象の URL

コードをコピー コードは次のとおりです:

urls = ["http://meiwen.me/src/index.html",
"http://1000chi.com/game/index.html",
"http://see.xidian.edu.cn/cpp/html/1429.html",
"https://docs.python.org/2/howto/regex.html",
"""https://www.google.com.hk/search?client=aff-cs-360chromium&hs=TSj&q=url%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90 %8Dre&oq=url%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90%8Dre&gs_l=serp.3...74418.86867.0.87673.28.25.2.0.0.0.541.2454.2-6j0j1j1 .8.0....0...1c.1j4.53.serp..26.2.547.IuHTj4uoyHg""",
"file:///D:/code/echarts-2.0.3/doc/example/tooltip.html",
"http://api.mongodb.org/python/current/faq.html#is-pymongo-thread-safe",
"https://pypi.python.org/pypi/publicsuffix/",
"http://127.0.0.1:8000"
]

urlparse + 通常のメソッドを使用します

コードをコピー コードは次のとおりです:

インポートリ
urlparse から 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

実行結果は次のとおりです:

コードをコピー コードは次のとおりです:

meiwen.me
1000chi.com
参照.xidian.edu.cn
python.org
google.com.hk
不明
mongodb.org
python.org
127.0.0.1:8000

基本的には許容されます

ドメイン名を解決するための urllib

コードをコピー コードは次のとおりです:

urllib をインポート

「--」*40 を印刷
URL 内の URL の場合:
プロト、残り = urllib.splittype(url)
res、rest = urllib.splithost(rest)
res でない場合は "unkonw" を出力します else res

実行結果は次のとおりです:

コードをコピー コードは次のとおりです:

meiwen.me
1000chi.com
参照.xidian.edu.cn
docs.python.org
www.google.com.hk
不明
api.mongodb.org
pypi.python.org
127.0.0.1:8000

さらに分析が必要な www. も提供します

サードパーティモジュール tld を使用します

コードをコピー コードは次のとおりです:

from tld import get_tld

「--」*40 を印刷
URL 内の URL の場合:
試してみてください:
in到账速度的)get_tld(url)
を印刷 e:
としての例外を除く print "unkonw"

実行結果:

コードをコピー コードは次のとおりです:

meiwen.me
1000chi.com
xidian.edu.cn
python.org
google.com.hk
不明
mongodb.org
python.org
不明

結果は許容範囲内です

使用できるその他の解析モジュール:

tld
tldextract
パブリックサフィックス

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート