欢迎访问宙启技术站
智能推送

Python中的requests.utils.urlparse()函数解析URL的示例代码

发布时间:2023-12-14 02:03:20

requests.utils.urlparse()函数是Python中解析URL的方法之一。该函数可以将一个URL字符串解析成5个部分:协议、域名、路径、参数和锚点。

使用方法如下:

import requests

url = 'https://www.example.com/path?param1=value1&param2=value2#anchor'

parsed_url = requests.utils.urlparse(url)

print('协议:', parsed_url.scheme)
print('域名:', parsed_url.netloc)
print('路径:', parsed_url.path)
print('参数:', parsed_url.query)
print('锚点:', parsed_url.fragment)

输出结果为:

协议: https
域名: www.example.com
路径: /path
参数: param1=value1&param2=value2
锚点: anchor

上述代码中,我们首先定义了一个URL字符串"url",然后使用requests.utils.urlparse()函数将URL字符串解析成5个部分,并分别赋值给parsed_url的相应属性。最后,我们打印每个属性的值。

其中,parsed_url.scheme 表示协议部分("https"),parsed_url.netloc 表示域名部分("www.example.com"),parsed_url.path 表示路径部分("/path"),parsed_url.query 表示参数部分("param1=value1&param2=value2"),parsed_url.fragment 表示锚点部分("anchor")。

此外,如果URL中缺少某些部分,parsed_url中对应的属性会返回空字符串。例如,如果URL中没有参数部分,那么parsed_url.query会返回空字符串。

下面再给出一个完整的示例,通过解析URL获取相关信息并进行处理:

import requests

def get_url_info(url):
    parsed_url = requests.utils.urlparse(url)
    
    if parsed_url.scheme != 'http' and parsed_url.scheme != 'https':
        print('不支持的协议:', parsed_url.scheme)
        return
    
    print('协议:', parsed_url.scheme)
    print('域名:', parsed_url.netloc)
    
    path_parts = parsed_url.path.split('/')
    print('路径:', path_parts)
    
    if parsed_url.query:
        params = parsed_url.query.split('&')
        print('参数:')
        for param in params:
            key, value = param.split('=')
            print(key, ':', value)
    
    if parsed_url.fragment:
        print('锚点:', parsed_url.fragment)

url = 'https://www.example.com/path?param1=value1&param2=value2#anchor'
get_url_info(url)

输出结果为:

协议: https
域名: www.example.com
路径: ['', 'path']
参数:
param1 : value1
param2 : value2
锚点: anchor

在上述示例中,我们定义了一个函数get_url_info(url),该函数接受一个URL字符串作为参数。函数首先使用requests.utils.urlparse()函数解析URL,并检查协议部分是否为"http"或"https"。如果协议部分不匹配,则输出"不支持的协议:"加上解析出来的协议部分,并返回。如果协议匹配,接着输出解析出来的协议和域名部分。

然后,我们将解析出来的路径部分根据"/"进行分割,并逐个输出各个部分。

接下来,我们判断解析出来的参数部分是否存在。如果存在,我们先将参数部分根据"&"进行分割,然后逐个输出键值对。

最后,我们判断解析出来的锚点部分是否存在。如果存在,直接输出锚点部分。

通过这个示例,我们可以根据不同URL的需求,灵活地处理和使用解析出来的URL信息。