import requestsRequests库的7个主要方法
requests.request() # 构造一个请求,支撑以下各方法的基础方法 requests.get() # 获取HTML网页的主要方法,对应于HTTP的GET requests.head() # 获取HTML网页的头部信息,对应HTTP的HEAD requests.post() # 向HTML网页提交POST请求的方法,对应HTTP的POST requests.put() # 向HTML网页提交PUT请求的方法,对应于HTTP的PUT requests.patch() # 向HTML网页提交局部修改请求,对应于HTTP的PATCH requests.delete() # 向HTML页面提交删除请求,对应于HTTP的DELETE
r = requests.get("http://www.baidu.com")
Requests库的get()方法:
r=request.get(url)/构造向服务器请求资源的Request对象,同时返回一个包含服务器资源的Respose对象
r就是一个Respose对象,它包含了爬虫返回的全部内容, 也包含了我们向服务器请求的Resquset信息
r.status_code # HTTP请求的返回状态,状态码200连接成功,404表示连接失败或者就是非200就是失败的 # 以下执行的条件就是要是r.status_code=200的基础上才能够进行的 r.text # HTTP响应内容的 字符串形式,即url对应的页面内容 r.encoding # 从HTTP header中猜测的响应内容编码方式(并没有进行分析内容,只是一个猜测) r.apparent_encoding # 从内容分析出的响应内容编码方式(备选编码方式) r.content # HTTP相应内容的二进制形式 r.raise_for_status() # 如果不是200,产生异常requests.HTTPErrorRequests库的异常
requests.ConnectionError # 网络连接错误异常 requests.HTTPError # HTTP错误异常 requests.URLRequired # url缺失异常 requests.TooManyRedirects # 超过最大重定向次数,产生重定向的异常 requests.ConnectTimeout # 连接远程服务器超时异常(仅仅指那一个异常) requests.Timeout # 请求URL超时,产生超时异常(整个过程的超时异常)
# 通用代码框架
def GetHTMLText(url):
try:
r = requests.get(url)
r.raise_for_status()
# 最重要的一步,如果r.status_code!=200,他将先产生一次异常,能够被except进行捕获到
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常!!!"
HTTP超文本传输协议:
是基于“请求与响应”模式的,无状态的应用层协议,采用URL作为定位网络资源的标志
URL的格式:http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号
path:请求资源的路径
HTTP协议对资源的操作:
GET:请求获取URL位置的资源
HEAD:请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST:请求向URL位置的资源后附加新的数据
PUT:请求向URL位置存储一个资源覆盖原URL位置的资源
PATCH:请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE:请求删除URL位置存储的资源
可以说是最重要的方法,它可以用method中的方法来替代后面六种方法
requests.request(method,url,**kwargs)(**kwargs是13个访问控制参数)
method:GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS(使用较少)
# 例:r=requests.request('Get',url,**kwargs)
# **kwargs:控制访问的参数,均为可选项
params:字典或者字节序列,作为参数增加到url中,
# 通过这样一个参数,可以把一些键值对增加到url中使得url再去访问时不止访问的是这个资源,而同时带入了一些参数,服务器可以接受这些参数,并根据这些参数筛选部分资源,返回回来
data:字典、字典序列或文件对象,作为Request的内容
json:JSON格式的数据,作为Request的内容
headers:字典,HTTP定制头的相关域
cookies:字典或者cookieJar,Request中的cookie
auth:元组,支持HTTP认证功能
files:字典类型,传输文件
timeout:设置的超时时间,秒为单位
proxies:字典类型,设定访问代理服务器,可以增加登录认证,可有效防止对爬虫的逆追踪
allow_redirects:True/False,默认为True,重定向开关
stream:True/False,默认为True,获取内容立即下载开关
verify:True/False,默认为True,认证SSL证书的开关
cert:本地SSL证书路径
requests.get()
requests.get(url,params=None,**kwargs) url:拟获取页面的url链接 params:url中的额外参数,字典或者字节流格式,可选 **kwargs:12个控制访问的参数requests.head()
requests.head(url,**kwargs) url:拟获取页面的url链接 **kwargs:13个控制访问的参数requests.post()
requests.post(url,data=None,json=None,**kwargs) url:拟获取页面的url链接 data:字典、字典序列或文件对象,作为Request的内容 json:JSON格式的数据,作为Request的内容 **kwargs:11个控制访问的参数requests.put()
requests.put(url,data=None,**kwargs) url:拟获取页面的url链接 data:字典、字典序列或文件对象,作为Request的内容 **kwarges:12个控制访问的参数requests.patch()
requests.patch(url,data=None,**kwargs) url:拟获取页面的url链接 data:字典、字典序列或文件对象,作为Request的内容 **kwarges:12个控制访问的参数requests.delete()
requests.delete(url,**kwargs) url:拟删除页面的url链接 **kwarges:13个控制访问的参数



