12

URL を開いてデータを読み取る前に、その URL が有効かどうかを確認したいと考えています。

パッケージの関数を使用していましurlparseた:urlparse

if not bool(urlparse.urlparse(url).netloc):
 # do something like: open and read using urllin2

ただし、一部の有効な URL が壊れたものとして扱われていることに気付きました。たとえば、次のようになります。

url = upload.wikimedia.org/math/8/8/d/88d27d47cea8c88adf93b1881eda318d.png

この URL は有効です (ブラウザを使用して開くことができます)。

URL が有効かどうかを確認するより良い方法はありますか?

4

4 に答える 4

5

をチェックする以下の関数と、URL を解析した後に来る変数を試すことができschemeます。Python 2 と 3 の両方をサポートします。netlocpath

try:
    # python 3
    from urllib.parse import urlparse
except ImportError:
    from urlparse import urlparse

def url_validator(url):
    try:
        result = urlparse(url)
        return all([result.scheme, result.netloc, result.path])
    except:
        return False
于 2017-12-07T11:55:58.187 に答える
1

スキーマのない URL は実際には無効です。ブラウザは http:// をスキーマとして提案するほど賢いだけです。not re.match(r'^[a-zA-Z]+://', url)URL にスキーマ ( )が含まれていないかどうかを確認し、先頭に追加http://することをお勧めします。

于 2014-08-12T08:13:10.790 に答える