文章目录
- 1. URL 的组成
- 2. 什么时候回用到 URL?
- 3. URL 的组成有哪几个部分?
- 4. 通过哪些方法对 URL 进行构造和解析
- 4.1 URL 解析和拆分
- ① urlparse()
- ② urlsplit()
- 4.2 URL 拼接和组合
- ① urlunparse()
- ② urlunsplit()
- ③ urljoin()
- 4.3 URL的序列化
- ① urlencode() :序列化
- 4.4 URL 的反序列化
- ① parse_qs():反序列化
- ② parse_qsl()
- 4.5 URL 的格式转换(编码)
- 4.6 URL 的格式转换(解码)
1. URL 的组成
URL 全称为统一资源定位器,网络上的每一个资源(网页、图片、文字、链接)都有一个特定的 “标识”,这个就是URL
2. 什么时候回用到 URL?
当我们想构造一个网络爬虫来爬取网络资源的时候,我们要构造一个 URL 让爬虫去访问,然后把资源背回来。所以我们要学习 URL 的相关知识。
3. URL 的组成有哪几个部分?
- 协议 http
- 域名 www.baidu.com
- 路径 index.html
- 参数 user
- 查询条件 id=5
- 锚点 comment
一般标准的 URL 构成都会符合这六种结构部分。
4. 通过哪些方法对 URL 进行构造和解析
4.1 URL 解析和拆分
① urlparse()
解析 URL, 解析之后可以进行 URL 中各个部分的提取
from urllib.parse import urlparse
x = urlparse("http://www.baidu.com/index.html;user?id=5#comment")
print(x)
print(x.scheme,'\n',x.netloc,'\n',x.path,'\n',x.params,'\n',x.query,'\n',x.fragment,'\n')
② urlsplit()
效果与①几乎相同,只是不再单独解析 参数 部分;最终只返回 5 个结果
4.2 URL 拼接和组合
① urlunparse()
将列表形式的 URL 进行拼接成一个整体
from urllib.parse import urlunparse
x = ['http','www.baidu.com','index.html','user','id=5','comment']
url = urlunparse(x)
print(url)
② urlunsplit()
也是进行拼接,只不过输入的参数也是五项
③ urljoin()
可以提供一个基础链接 base_url 作为第一个参数,将新链接作为第二个参数,该方法会解析 base_url 中的 scheme、netloc、path这三个内容并对新链接缺失的部分进行补充
具体的实例可以参考 urljoin 的详细用法
4.3 URL的序列化
① urlencode() :序列化
将字典形式的数据序列化成 URL 的一部分
from urllib.parse import urlencode,urljoin
params = {
'name':'germany',
'age':22
}
base_url = 'http://www.baidu.com?'
url = base_url+urlencode(params)
print(url)
4.4 URL 的反序列化
① parse_qs():反序列化
将序列化的内容转化为字典形式
from urllib.parse import parse_qs
query = 'name=germany&age=22'
print(parse_qs(query))
② parse_qsl()
作用跟 ① 相似,只是最后输出的形式是元组
from urllib.parse import parse_qsl
query = 'name=germany&age=22'
print(parse_qsl(query))
4.5 URL 的格式转换(编码)
对出现中文参数时候的乱码情况,把中文符号转化为URL 编码
from urllib.parse import quote
keyword = '壁纸'
url = "http://www.baidu.com/s?wd=" + quote(keyword)
print(url)
4.6 URL 的格式转换(解码)
对URL进行解码
from urllib.parse import unquote
url = 'http://www.baidu.com/s?wd=%E5%A3%81%E7%BA%B8'
print(unquote(url))