WordPress网站建设宣传图片

Python拼接URL:urllib.parse urljoin使用

释放双眼,带上耳机,听听看~!

Python拼接URL可以使用urllib.parse中的urljoin方法,urllib是Python中一个用于URL 处理的模块,urllib.parse 用于解析 URL,在之前分享的Python从路径|URL中获取文件名、文件后缀的方法中提到过使用其中的urlparse方法解析URL,感兴趣的可以去看看。

urllib.parse模块的的urlparse和urljoin刚好是两个相反的功能,urlparse是将 URL 解析成 ParseResult 对象,实现url的识别和分段。urljoin()方法则是将URL进行拼接、组合,也是在一些爬虫项目中比较常使用的功能,像拼接URL的话,我们在抓取网站上的相对链接就可以使用这个方法进行补全。

下面我们来看下使用urljoin拼接URL的具体代码:

urllib.parse模块的urljoin()方法介绍

from urllib.parse import urljoin
urljoin(base, url, allow_fragments=True)

通过合并一个 “基准 URL” (base) 和另一个 URL (url) 来构造一个完整 (“absolute”) URL。会使用基准 URL 的各部分,特别是地址协议、网络位置和 (一部分) 路径来提供相对 URL 中缺失的部分。如果第二个有完整的路径,则以第二个为主。

参数介绍

如果 allow_fragments 参数为假值,则片段标识符(URL中的锚点#….)不会被识别。

返回值说明

如果 url 为绝对 URL (即以 // 或 scheme:// 打头),则 url 的主机名和/或协议将出现在结果中。 例如:

urljoin('http://www.cwi.nl/%7Eguido/Python.html',
...         '//www.python.org/%7Eguido')
'http://www.python.org/%7Eguido'

如果你不想要那样的行为,请使用 urlsplit() 和 urlunsplit() 对 url 进行预处理,移除可能存在的 scheme 和 netloc 部分。

urljoin()拼接url使用实例

# 连接两个参数的url, 将第二个参数中缺的部分用第一个参数的补齐
from urllib.parse import urljoin

print(urljoin('http://www.baidu.com','FAQ.html'))  
# http://www.baidu.com/FAQ.html
print(urljoin('www.baidu.com', '?category=2#comment'))
# www.baidu.com?category=2#comment
# 如果第二个有完整的路径,则以第二个为主
print(urljoin('www.baidu.com', 'https://blog.csdn.net/nav/python'))
# https://blog.csdn.net/nav/python

特殊使用示例

传入两个毫不相干,相对完整的URL

结果为第二个URL

from urllib.parse import urljoin
print(urljoin('https://haha.com/index.html','https://baidu.com'))
#运行结果为    https://baidu.com

传入两个非常缺损的URL

from urllib.parse import urljoinprint(urljoin('www.bai.com','/index.html'))
#结果是   /index.html

所以说,最好不要这么做,否则会产生意想不到的结果。

上面部分代码懒得写了直接复制于:python url路径拼接 urllib.parse urljoin 简介

Python拼接URL:urllib.parse urljoin使用

相关内容:

注意:请注意文档URL中的版本号,选择和自己Python对应的,如果不对应的访问后在选择。

官方文档地址:

https://docs.python.org/zh-cn/3/library/urllib.parse.html#urllib.parse.urljoin

模块官方文档地址:

https://docs.python.org/zh-cn/3/library/urllib.html

Python urllib 菜鸟教程

https://www.runoob.com/python3/python-urllib.html

模块GitHub地址

https://github.com/python/cpython/tree/3.11/Lib/urllib/

给TA打赏
共{{data.count}}人
人已打赏
Python笔记

Python如何只导出当前Python文件所需模块包依赖

2023-8-26 18:08:17

Python内置模块Python字典Python笔记

Python 将字符串转为字典

2023-9-15 16:11:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
展开目录