문자열을 "유효한"URL로 확인하는 건전한 방법을 알아 내려고이 페이지를 방문했습니다. python3을 사용하여 여기에 내 솔루션을 공유합니다. 추가 라이브러리가 필요하지 않습니다.
python2를 사용하는 경우 https://docs.python.org/2/library/urlparse.html을 참조 하십시오 .
python3을 그대로 사용하는 경우 https://docs.python.org/3.0/library/urllib.parse.html을 참조 하십시오 .
import urllib
from pprint import pprint
invalid_url = 'dkakasdkjdjakdjadjfalskdjfalk'
valid_url = 'https://stackoverflow.com'
tokens = [urllib.parse.urlparse(url) for url in (invalid_url, valid_url)]
for token in tokens:
pprint(token)
min_attributes = ('scheme', 'netloc') # add attrs to your liking
for token in tokens:
if not all([getattr(token, attr) for attr in min_attributes]):
error = "'{url}' string has no scheme or netloc.".format(url=token.geturl())
print(error)
else:
print("'{url}' is probably a valid url.".format(url=token.geturl()))
ParseResult (scheme = '', netloc = '', path = 'dkakasdkjdjakdjadjfalskdjfalk', params = '', query = '', fragment = '')
ParseResult (scheme = 'https', netloc = 'stackoverflow.com', path = '', params = '', query = '', fragment = '')
'dkakasdkjdjakdjadjfalskdjfalk'문자열에는 체계 또는 netloc이 없습니다.
' https://stackoverflow.com '은 아마도 유효한 URL 일 것입니다.
다음은 더 간결한 기능입니다.
from urllib.parse import urlparse
min_attributes = ('scheme', 'netloc')
def is_valid(url, qualifying=min_attributes):
tokens = urlparse(url)
return all([getattr(tokens, qualifying_attr)
for qualifying_attr in qualifying])