爬虫之urllib的get请求参数处理

url的组成

拿百度来说,我们在百度搜索python的时候他的url组成往往是这样的

https://www.baidu.com/s?tn=88093251_47_hao_pg&ie=utf-8&wd=python

在这里插入图片描述

协议

最前面的表示协议,就是图片中的1

除了http协议外,我们常见的协议还有

协议端口号
http80
https443
mysql3306
oracle1521
redis6379
mongodb27017

主机名

就是图片中的2

路径

就是图片中的3

参数

就是图片中的4

他是一&链接键值对

其他

比如有的URL中还有#,他表示锚点

get请求

get的url

当我们在百度进行搜索的时候一般用的就是get请求,我们搜索西游记,看看他的路由情况

https://www.baidu.com/s?tn=88093251_47_hao_pg&ie=utf-8&wd=%E8%A5%BF%E6%B8%B8%E8%AE%B0

当我们进行粘贴的时候就会发现,西游记三个汉字进行了编码为%E8%A5%BF%E6%B8%B8%E8%AE%B0,这个我们应该怎么处理呢

编码

  1. urllib.parse.quote(str)对于汉字进行编码
  2. urllib.parse.urlencode(dict)对于字典进行编码

汉字编码

import urllib.parse

print(urllib.parse.quote("西游记"))

打印

%E8%A5%BF%E6%B8%B8%E8%AE%B0

我们会发现他与上面的西游记编码是相同的

字典编码

假设有些路径的参数都是汉字如name=孙悟空&sex=男&addr=花果山,那么我们可以做如下处理

data = {
    "name":"孙悟空",
    "sex":"男",
    "addr":"花果山"
}

print(urllib.parse.urlencode(data))

打印

name=%E5%AD%99%E6%82%9F%E7%A9%BA&sex=%E7%94%B7&addr=%E8%8A%B1%E6%9E%9C%E5%B1%B1

我们将这个参数拼接到get请求的url上面就可以了


版权声明:本文为youhebuke225原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。