(作成は簡単ではありません。好きになることを忘れないでください)
情報化時代では、多くの場合、URL から IP アドレスを取得する必要があります。インターネットでそれを実現する方法を 10 分以上探しましたが、実行できなかったか、肥大化しすぎていました。そこでひらめきを得て、簡単な方法を考えました。
socketモジュールのgethostbyname関数はホスト名しか受け取れない ので、まずはURLからホスト名を取得する関数を書きます。
通常の URL は、常にいくつかの部分で構成されています。
<プロトコル>://<サーバーの種類> . <ドメイン名>/<ディレクトリ>/<ファイル名>
https://www.baidu.com/、https://www.csdn.net/ など
そして、必要なホスト名は真ん中の文字列です:
<サーバーの種類> . <ドメイン名>
つまりwww.baidu.com、www.csdn.net
ホスト名は最初の「//」と最初の「/」の間にあることがわかります。このことから、ホスト名を URL から分離する関数を簡単に作成できます。
def gethost(url):
output = ''
if '//' in url:
output = url.split('//')[1]
if '/' in output:
output = output.split('/')[0]
elif '/' in url:
output = url.split('/')[0]
return output
これは、入力 URL が比較的正常な場合にのみ期待どおりに機能する単純な関数です。ただし、ブラウザーからコピーして貼り付けた URL には十分です。必要に応じてカプセル化するか、正規表現を使用してホスト名を分離することができます。
次に、戻り値をgethostbynameに渡して結果を取得します。
完全な手順は次のとおりです。
from socket import gethostbyname
def gethost(url):
output = ''
if '//' in url:
output = url.split('//')[1]
if '/' in output:
output = output.split('/')[0]
elif '/' in url:
output = url.split('/')[0]
return output
def getip(url):
return gethostbyname(gethost(url))
getip関数 を呼び出すことで、 URL から IP を取得できます。
テストは次のとおりです。
url = (
'https://www.baidu.com/',
'https://www.csdn.net/',
'https://mirrors.tuna.tsinghua.edu.cn/#'
)
for i in url:
print(i, getip(i))
結果:
参考文献: