urllib库
urllib库是python中一个最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据。(python标准库)
urlopen函数
在python3的urllib库中,所有和网络请求相关的方法,都被集到urllib.request模块中:
from urllib import request
resp=request.urlopen("http:www.baidu.com")
print(resp.read())
urlopen函数详解
创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
- url:请求的url
- data:请求的data,如果设置了这个值,那么将变成post请求。
- 返回值:返回值是一个http.client.HTTPResponse对象,这个对象是一个类文件句柄对象。(有read(size)、readline、readlines以及getcode等方法)
数据保存方式
urlretrieve函数
这个函数可以方便的将网页上的一个文件保存到本地。
from urllib import request
request.urlretrieve('https://123.sogou.com/','sogou.html')#(url,文件名)
url编解码
urlencode函数
urlencode可以把字典数据转换为url编码的数据。
from urllib import parse
data={'name':'爬虫基础','greet':'hello world','age':100}
qs=parse.urlencode(data)
#a='英语'
#qs=parse.quote(a)对字符串编码
print(qs)
parse_qs函数
对url解码
parse.parse_qs(qs)
URL地址解析
urlparse和urlsplit
有时候拿到一个url,想要对这个url中的各个组成部分进行分割,那么这时就可以使用urlparse或urlsplit.
urlparse和urlsplit基本一样,唯一不同的地方是:
urlparse里有params属性,而urlsplit没有这个属性。(可选参数)
from urllib import parse
url='https://page.1688.com/channel/szyx/re/index.html?cosite=sogoudaohang&location=mingzhan'
#result=parse.urlparse(url)
result=parse.urlsplit(url)
print(result)
print(result.path)
request.Request类
如果想要在请求中添加一些请求头,那么就必须使用request.Request类来实现。比如添加一个user-agent.
from urllib import request
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'}
#构造url连接
rq=request.Request("http://www.baidu.com",headers=header)
resp=request.urlopen(rq)
print(resp.read())