📜  Python|检查字符串中的 URL(1)

📅  最后修改于: 2023-12-03 14:46:29.628000             🧑  作者: Mango

Python | 检查字符串中的 URL

在日常编程中,我们经常会遇到需要检查字符串中是否包含 URL 的情况。使用 Python 编程语言,非常方便快捷地实现这个功能。

使用正则表达式匹配 URL

Python 中可以使用正则表达式(RegEx)匹配字符串中的 URL。下面是一个简单的 Python 脚本,用于检查字符串中是否包含 URL。

import re

def check_url(url):
    regex = re.compile(
        r'^https?://'  # http:// or https://
        r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|'  # domain...
        r'localhost|'  # localhost...
        r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'  # ...or ip
        r'(?:/?|[/?]\S+)$', re.IGNORECASE)
    return re.match(regex, url) is not None

# 用法示例
url1 = 'https://www.google.com'
url2 = 'www.my-blog.com'
url3 = 'https://localhost:8080'
url4 = 'ftp://my-file.com'
url5 = 'abc'

print(check_url(url1))  # True
print(check_url(url2))  # True
print(check_url(url3))  # True
print(check_url(url4))  # False
print(check_url(url5))  # False

以上代码使用正则表达式匹配 URL,可以处理多种情况,包括域名、IP 地址及协议等等。如果匹配成功,则返回 True,否则返回 False。

使用第三方 Package 匹配 URL

Python 还有第三方 Package,可以方便地实现 URL 的匹配检查。下面介绍几个比较常用的 Package。

tldextract

tldextract 可以解析一个 URL 并从中提取出域名的 Top-Level Domain。该 Package 可以去除 URL 中的子域名、主机名及路径,只留下顶级域名,方便与其他文本处理结合使用。

import tldextract

url1 = 'https://www.google.com'
url2 = 'www.my-blog.com'

print(tldextract.extract(url1))  # ExtractResult(subdomain='www', domain='google', suffix='com')
print(tldextract.extract(url2))  # ExtractResult(subdomain='', domain='my-blog', suffix='com')

以上代码使用 tldextract 提取了 URL 中的域名信息,返回的是一个 ExtractResult 对象。

validators

validators 可以帮助我们验证 URL 是否合法。该 Package 可以检查 URL 是否满足特定协议、是否包含路径及查询参数等等。

import validators

url1 = 'https://www.google.com'
url2 = 'www.my-blog.com'
url3 = 'https://localhost:8080'
url4 = 'ftp://my-file.com'
url5 = 'abc'

print(validators.url(url1))  # True
print(validators.url(url2))  # True
print(validators.url(url3))  # True
print(validators.url(url4))  # False
print(validators.url(url5))  # False

以上代码使用 validators 验证了 URL 是否合法,如果合法,则返回 True,否则返回 False。

总结

Python 中检查字符串中的 URL 有多种方法。我们可以使用正则表达式匹配 URL,也可以使用第三方 Package(如 tldextract 和 validators)帮助我们解析和验证 URL。不同方法各有优劣,开发者可以根据具体需求进行选择。