【Python_urllib学习笔记(二)】urllib.parse模块的基本用法

urllib.parse模块的基本用法

前言

此篇文章中介绍urllib库中parse 模块的基本用法,包括查询参数编码、编码后字符串进行解码等。

正文

1、parse模块

parse模块的作用是操纵url地址及其各组成部分,实现url的识别和分段。

1.1 urllib.parse.urlencode()方法

parse.urlencode()方法 : 查询参数必须在编码后才能加入url地址,parse.urlencode()方法的作用就是对url地址中查询参数进行编码,参数类型为字典。
应用实例1:
对查询参数"百度"进行编码

from urllib import parse
paras = parse.urlencode({"wd": "百度"})
url = "http://www.baidu.com/s?" + paras
print(url)
http://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6

应用实例2:
如果url地址中如果有多个查询参数

from urllib import parse
paras = parse.urlencode({"wd": "百度", "pn": "10"})
url = "http://www.baidu.com/s?%s" % paras1
print(url)
http://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6&pn=10

注意:使用parse.urlencode()方法编码后会自动对多个查询参数间添加”&“符号

1.2 urllib.parse.quote()方法

parse.quote()方法 : 对url地址中的中文进行编码,类似于urlencode()方法。
应用实例:
对查询参数"百度"进行编码

from urllib import parse
paras=parse.quote("百度")
url = "http://www.baidu.com/s?wd={}&pn={}".format(paras,2)
print(url)
http://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6&pn=2

最对中文部分进行编码,需要手动拼接url地址,下面简单介绍下拼接字符串的三种方式。

拼接url地址的三种方式:
1、字符串相加

paras=parse.quote("百度")
url="http://www.baidu.com/s?" + paras
http://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6

2、字符串格式化

paras=parse.quote("百度")
url = "http://www.baidu.com/s?%s" % paras
http://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6

3、字符串的format()方法

paras=parse.quote("百度")
url = "http://www.baidu.com/s?{}}".format(paras)
http://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6&pn=2

1.3 urllib.parse.unquote()方法

parse.unquote()方法 : 有了quote()方法转换,也需要有unquote()方法对url地址进行解码,作用是将编码后的字符串转为普通的Unicode字符串。
应用实例:
对编码后的字符串"%E7%99%BE%E5%BA%A6"进行解码

from urllib import parse
paras = "%E7%99%BE%E5%BA%A6"
result = parse.unquote(paras)
print(result)
百度

2、parse模块的实际应用示例

模拟 百度搜索关键字,保存 “关键字.html” 到本地
流程:
1、拼接url地址
2、发请求获取响应内容
3、保存到本地文件
具体代码:

from urllib import parse, request
# 1、拼接url地址
word = input("请输入百度搜索的关键字:") # 用户输入查询关键字
params = parse.urlencode({"wd": word}) # 对 输入的关键字进行编码
url = "http://www.baidu.com/s?{}".format(params) # url地址拼接
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko)"} # 包装请求头

# 2、发请求获取响应内容
req = request.Request(url=url, headers=headers) # 构造请求对象
res = request.urlopen(req) # 获取响应对象
html = res.read().decode() # 获取响应内容

# 3、保存到本地文件
filename = word + ".html" # 定义文件名称
with open(filename, 'w', encoding="utf-8") as f: # 保存文件到本地
    f.write(html)
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

禾戊之昂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值