Requests库入门

Requests库得7个主要方法:

  requests.request()    构造一个请求,支撑以下各方法得基础方法

  requests.get()      获取html网页得主要方法,对应于HTTP得GET

  requests.head()      获取http网页信息头的方法,对应于HTTP的HEAD

  requests.post()       向html网页提交POST请求的方法,对应HTTP的POST

  requests.put()      向html网页提交PUT请求的方法,对应HTTP的PUT(一组数据所有字段一并提交)

  requests.patch()     向html网页提交局部修改请求,对应HTTP的PATCH(可以提交一组数据的部分字段,节省带宽)

  requests.delete()     向html提交删除请求,对应HTTP的DELETE

 

requests.get(url, params=None, **kwargs)
    • url    :拟获取页面的链接
    • params      : url中的额外参数,字典或字节流格式,可选
    • **kwargs     :12个控制访问参数

 后面六种方法其实是调用了requests.request()

  以get方法源码举例:

def get(url,params=None, **kwargs):

    kwargs.setdefault('allow_redirects', True)
    return request('get', url, params=params,**kwargs) #其余5个可以通过改变第一个字符串参数实现

  get的使用:

r =requests.get("http://www.baidu.com")

  r是服务器返回的response对象

    Response对象的属性

      r.status_code          HTTP请求的返回状态,200表示连接成功,404表示失败

      r.text              HTTP响应内容的字符串形式,即url得页面内容

      r.encoding             从HTTP header中猜测得响应内容编码方式

      r.apparent_encoding       从内容中分析的响应内容的编码方式(备选编码方式)

      r.content             HTTP响应内容的二进制形式

    ps: 

      r.encoding:      如果header中不存在charset,则认为编码为ISO-8859-1,r.text根据r.encoding现实页面内容

      r.apparent_encoding:  根据页面内容分析的编码方式,可以看做是r.encoding的备选

 

Requests库的异常:

      requests.ConnectionError      网络连接异常,如DNS查询失败、拒绝连接等

      requests.HTTPError          HTTP错误异常

      requests.URLRequired         URL缺失异常

      requests.TooManyRedirects      超过最大重定向次数,产生重定向异常

      requests.ConnectTimeout      连接远程服务器超时异常

      requests.Timeout          请求URL超时,产生超时异常


 

r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外fi语句,改语句便于利用try-except进行异常处理

      requests.raise_for_status()      如果不是200,产生异常requests.HTTPError

 

抓爬网页的通用代码框架

import requests

def getHTMLText(url):
    try:
        r.reuqests.get(url, timeout=30)
        r.raise_for_status()    #不是200引发异常
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return '产生异常'

if __name__=="__main__":
    url = 'http://www.biadu.com'
    print(getHTMLText(url))

 

HTTP URL的理解:

  URL是通过HTTP协议存取资源的Interent路径,一个URL对应一个数据资源,就好像电脑文件路径一样

 

**kwargs:控制访问参数

  params        url中的额外参数,字典或字节流格式,可选

  data          字典、字节序列或文件,Requests的内容

  json           JSON格式的数据,Requests的内容

  headers          字典,HTTP定制头   

  cookies        字典或CoolieJar,Request中的cookie

  auth           元组,支持HTTP认证功能

  files            字典类型,传输文件

  timeout         设定超时时间单位为秒

  proxies         字典类型,设定访问代理服务器,可以增加登录认证

  allow_redirects     True/False,默认为True,重定向开关

  stream          True/False,默认为True,获取内容立即下载开关

  verify         True/False,默认为True,认证SSL证书的开关

  cert          本地SSL证书路径

posted @ 2020-03-31 22:38  vhao11  阅读(157)  评论(0编辑  收藏  举报