赞
踩
Urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。
1)主要包含以下4个模块
2)urllib.request.urlopen()
模块定义了有助于在复杂环境中打开URL(主要是HTTP)的函数和类-基本身份验证和摘要身份验证,重构定向,Cookie等。
语法结构
urllib.request.urlopen(url,data = None,[ timeout,] *,cafile = None,capath = None,cadefault = False,context = None)
语法详解
3)urllib.openurl:返回对象的方法
# 设置一个url对象
url = "百度一下,你就知道"
#发送请求,打开url
up = urllib.request.urlopen(url)
print(type(up))
#返回对象
>>> <class 'http.client.HTTPResponse'>
上面我们可以看出返回的对象是HTTPResponse类型的,下面一起来看一下HTTPResponse类的方法
发送GET请求:
from urllib import request
response = request.urlopen('百度一下,你就知道')
print(response.read().decode())
发送post请求:
from urllib import reuqest
response = request.urlopen('Method Not Allowed', data=b'word=hello')
print(response.read().decode()) #decode()解码
我们已经知道在讲urlopen中传入一个网址的时候他就会主动的去访问目标的网址,会返回一个HTTPResponse类型的对象,那么我们是怎么知道我们发送的get请求和post请求呢?
def get_method(self):
"""Return a string indicating the HTTP request method."""
default_method = "POST" if self.data is not None else "GET"
return getattr(self, 'method', default_method)
这个是源码中的一个方法,根据代码我们得知如果data是不为空的话,就是post请求,否则就是get请求。
4)urllib.request.Request
上面的urllib是可对网页发起请求,在我们实际的爬虫应用中,如果频繁的访问一个网页,网站就会识别我们是不是爬虫,这个时候我们就要利用Request来伪装我们的请求头。
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
推荐使用request()来进行访问的,因为使用request()来进行访问有两点好处:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。