网络请求
(一)urllib简介
- urllib是Python自带的标准库中用于网络请求的库,无需安装,直接引用即可
- 通常用于爬虫开发、API(应用程序编程接口)数据获取和测试
- urllib库的四大模块:
- (1)urllib.request:用于打开和读取URL
- (2)urllib.error:包含提出的例外(异常)urllib.request
- (3)urllib.parse:用于解析URL
- (4)urllib.robotparser:用于解析robots.txt文件
编码
import urllib.parse
kw={
'wd':'网易新闻'}
#编写
result=urllib.parse.urlencode(kw)
print(result)
wd=%E7%BD%91%E6%98%93%E6%96%B0%E9%97%BB
Process finished with exit code 0
解码
#解码
res=urllib.parse.unquote(result)
print(res)
wd=%E7%BD%91%E6%98%93%E6%96%B0%E9%97%BB
wd=网易新闻
Process finished with exit code 0
(二)发送请求
- urllib.request库:模拟浏览器发起一个HTTP请求,并获取请求响应结果
- urllib.request.urlopen的语法格式:
- urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadafault=False,context=None)
- 参数说明:
- url:url参数是str类型的地址,也就是要访问的URL
- data:默认值为None,urllib判断参数data是否为None从而区分请求方式。若data=None,请求方式为Get,反之则为Post。参数data以字典形式存储数据,并将参数data由字典类型转换成字节类型才能完成Post请求
- urlopen函数返回的结果是一个http.client.HTTPResponse
发送Get请求
import urllib.request
url='https://www.lingdianshuwu.com/'
#发送请求
resp=urllib.request.urlopen(url)
html=resp.read()
print(html)
decode()方法将bytes类型转换为str类型
import urllib.request
url='https://www.lingdianshuwu.com/'
#发送请求
resp=urllib.request.urlopen(url)
html=resp.read().decode('gbk')
print(html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">