一.urllib简介
- 为什么要学urllib
- 有的一些比较老的爬虫项目就是用的是urllib
- 我们在做一些爬虫的时候往往需要requests+urllib一起使用
- python内置的模块
- urllib在某些方面还是非常的强大
urllib是python内置的一个爬虫网络请求模块
二.urllib.request 使用
1 创建请求对象 urllib.request.Request() 构建user-agent
2 发起请求获取响应对象 urllib.request.urlopen()
3 读取响应对象的内容 read().decode(‘utf-8’) bytes --> str
例子:
import urllib.request
url = "https://www.baidu.com/"
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50'
}
# 1,创建请求对象urllib.request.Request()
req = urllib.request.Request(url, headers=headers)
# 2 , 获取响应对象urllib.request.urlopen()
res = urllib.request.urlopen(req)
# 3,读取响应对象中的内容read().decode('utf-8')
html = res.read().decode('utf-8')
print(html)
三.urllib.parse 使用
我们的思路是 如果我请求的url地址中出现了中文字样,我们的思路就是把中文转换成%+十六进制的样式
第一种方式 urllib.parse.urlencode(dict) 转换成了十六进制+%
第二种方式 urllib.parse.quote(str)
补充 反爬的小细节
如果以后遇到了 url 里面的数据包含有 %+十六进制 这样的url我们是无法进行一个正常的请求
解决办法 通过 parse.unquote() 来进行处理
import urllib.parse
url02 = 'http%3A%2F%2Fshp%2Eqpic%2Ecn%2Fishow%2F2735012617%2F1611652290%5F84828260%5F8059%5FsProdImgNo%5F6%2Ejpg%2F200'
r = url02
result = urllib.parse.unquote(r)
print(result)