urllib库
它是python内置的请求库,包括 request ,error ,parse,robotparse。
这里主要介绍request 和parse模块。
request
它是HTTP请求模块,主要用来模拟发送请求。就像我们输入网址之后回车这样,这个模块提供一些参数,就可以模拟这个过程了。
1.urlopen()
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
用这个方法很简单,给这个方法传入一个url就可以请求网页,直接看代码
def urltest1():
response = urllib.request.urlopen('https://www.python.org') # 抓取python官网
print(response.read().decode('utf-8')) # 输出网页源码
print(response.status) # 查看返回结果的状态码
print(response.getheaders()) # 查看相应的头信息
print(response.getheader('Server')) # 查看响应头中的Server信息
print(type(response.read())) # 查看类型
if __name__ == '__main__':
urltest1()
pass
运行结果:
data参数
还可以给方法中的 data 传参, data为我们要传入的数据。这样一来,它的请求方式就不是GET,而是POST。也就是说模拟了表单提交的方式,以POST传输数据。
def urltest2():
data = urllib.parse.urlencode({'word': 'hello'}) # urlencode将字典转字符串
data = data.encode('utf-8') # 转字节流
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read().decode('utf-8')) # decode将字节流转为字符串
if __name__ == '__main__':
# usecookies()
urltest2()
pass
运行结果:
{
"args": {},
"data": "",
"files": {},
"form": {
"word": "hello"
},
"headers": {
"Accept-Encoding": "identity",
"Content-Length": "10",
"Content-Type": "application/x-www-form-urlencoded",