如何在 Python 中获取 URL 的基本部分
要获取 URL 的基本部分:
- 将 url 从
urllib.parse
模块传递给 urlparse 方法。 - 访问解析结果的 netloc 属性。
from urllib.parse import urlparse
my_url = 'https://example.com/images/wallpaper.jpg'
parsed = urlparse(my_url)
# ?️ ParseResult(scheme='https', netloc='example.com', path='/images/wallpaper.jpg', params='', query='', fragment='')
print(parsed)
base = parsed.netloc
print(base) # ?️ example.com
path = parsed.path
print(path) # ?️ /images/wallpaper.jpg
with_path = base + '/'.join(path.split('/')[:-1])
print(with_path) # ?️ example.com/images
print(path.split('/')) # ?️ ['', 'images', 'wallpaper.jpg']
我们使用了 urllib.parse
模块中的 urlparse
方法。
urlparse
方法接受一个 URL 并将其解析为六个组件。
from urllib.parse import urlparse
my_url = 'https://example.com/images/wallpaper.jpg'
parsed = urlparse(my_url)
# ?️ ParseResult(scheme='https', netloc='example.com', path='/images/wallpaper.jpg', params='', query='', fragment='')
print(parsed)
base = parsed.netloc
print(base) # ?️ example.com
path = parsed.path
print(path) # ?️ /images/wallpaper.jpg
解析结果的
netloc
属性返回基本 URL。
我们还可以访问其他属性,如 path
、query
等。
如果我们需要从结果中排除部分路径,请使用 str.rsplit()
或 str.split()
方法。
from urllib.parse import urlparse
my_url = 'https://example.com/images/wallpaper.jpg'
parsed = urlparse(my_url)
base = parsed.netloc
print(base) # ?️ example.com
path = parsed.path
print(path) # ?️ /images/wallpaper.jpg
with_path = base + '/'.join(path.rsplit('/', 1)[:-1])
print(with_path) # ?️ example.com/images
print(path.rsplit('/', 1)) # ?️ ['/images', 'wallpaper.jpg']
str.rsplit
方法使用提供的分隔符作为分隔符字符串返回字符串中的单词列表。
# ?️ ['/images', 'wallpaper.jpg']
print('/images/wallpaper.jpg'.rsplit('/', 1))
# ?️ ['', 'images', 'wallpaper.jpg']
print('/images/wallpaper.jpg'.rsplit('/'))
该方法采用以下 2 个参数:
- separator 在每次出现分隔符时将字符串拆分为子字符串
- maxsplit 最多完成最大拆分,最右边的拆分(可选)
除了从右侧拆分外,rsplit()
的行为类似于 split()
。
如果只想从右侧拆分一次,则可以将
maxsplit
参数设置为 1。
这是另一个嵌套更深的 URL 示例。
from urllib.parse import urlparse
my_url = 'https://example.com/images/nature/wallpaper.jpg'
parsed = urlparse(my_url)
base = parsed.netloc
print(base) # ?️ example.com
path = parsed.path
print(path) # ?️ /images/wallpaper.jpg
with_path = base + path.rsplit('/', 2)[0]
print(with_path) # ?️ example.com/images
print(path.rsplit('/', 2)) # ?️ ['/images', 'nature', 'wallpaper.jpg']
示例中的 URL 更深一层。
我们将 URL 从右侧拆分 2 次,并将 /images
路径添加到基本 URL。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。