这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」
祝大家新年快乐,万事如意,一切顺利
昨天学了一些,关于urllib cookie和异常处理的事,今天来学一下使用urllib 怎么去解析链接
urllib 里面的parse模块,这个模块定义了处理URL的标准接口,例如实现URL各部分的抽取,合并,以及连接转换 详细代码ref:code
urlparse
举个例子:
from urllib.parse import urlparse
result = urlparse("https://baidu.com/index.html;user?id=5#comment")
print(type(result))
print(result)
得到的结果:
<class 'urllib.parse.ParseResult'>
ParseResult(scheme='https', netloc='baidu.com', path='/index.html', params='user', query='id=5', fragment='comment')
可以看到,我们使用urlparse
来进行解析他是一个ParseResult的对象
我们可以点进去看他的这个urlparse方法
- 第一个参数很明显是要我跟给一个URL
- 第二个scheme 模式,就是当你的URL没有吧指定HTTPS这种的的时候它就会使用你传入的参数
- allow-fragments 是否忽略fragments 我把它理解为参数,如果设置为False 将会使得fragment部分为空
urlunparse
前面那个是解析,我就把它这个理解为构造了,接着举例子:
from urllib.parse import urlunparse
data = ["https","www.baidu.com","index.html","user","a=6","comment"]
print(urlunparse(data))
结果:
https://www.baidu.com/index.html;user?a=6#comment
好神奇,注意一定是六个参数,不然就会报异常,列表类型,或者元组类型都可以,这样就成功实现了URL的构造
urlsplit
就凭我的粗浅的英语水平,这应该是URL的分割方法, 不在解析params 部分,这样就只会返回五个结果. 看例子:
from urllib import parse
result = parse.urlsplit("https://www.baidu.com/index.html;user?id=5#comment")
print(result)
结果输出:
SplitResult(scheme='https', netloc='www.baidu.com', path='/index.html;user', query='id=5', fragment='comment')
这是一个元组,我们可以通过属性名来获取值,也可以通过索引来获取值
print(result.netloc,result[1])
www.baidu.com www.baidu.com
urlunsplit
相反,没什么好说的
from urllib import parse
result = parse.urlsplit("https://www.baidu.com/index.html;user?id=5#comment")
print(result)
print(result.netloc,result[1])
//上面的例子,得到是元组,我在让它拼回去
unresult = parse.urlunsplit(result)
print(unresult)
OK 过年了,学点记点就行了 代码可以在这里找到