Python写网络爬虫之:构造和解析URL

文章目录

  • 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

Python写网络爬虫之:构造和解析URL_第1张图片

2. 什么时候回用到 URL?

当我们想构造一个网络爬虫来爬取网络资源的时候,我们要构造一个 URL 让爬虫去访问,然后把资源背回来。所以我们要学习 URL 的相关知识。

3. URL 的组成有哪几个部分?

http://www.baidu.com/index.html;user?id=5#comment

  • 协议 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')

Python写网络爬虫之:构造和解析URL_第2张图片

② 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)

Python写网络爬虫之:构造和解析URL_第3张图片

4.4 URL 的反序列化

① parse_qs():反序列化

将序列化的内容转化为字典形式

from urllib.parse import parse_qs

query = 'name=germany&age=22'
print(parse_qs(query))

Python写网络爬虫之:构造和解析URL_第4张图片

② parse_qsl()

作用跟 ① 相似,只是最后输出的形式是元组

from urllib.parse import parse_qsl

query = 'name=germany&age=22'
print(parse_qsl(query))

Python写网络爬虫之:构造和解析URL_第5张图片

4.5 URL 的格式转换(编码)

对出现中文参数时候的乱码情况,把中文符号转化为URL 编码

from urllib.parse import quote

keyword = '壁纸'
url = "http://www.baidu.com/s?wd=" + quote(keyword)
print(url)

Python写网络爬虫之:构造和解析URL_第6张图片

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))

在这里插入图片描述

你可能感兴趣的:(Python写网络爬虫)