python爬虫学习之requests_01

1、Requests库的get()方法

  requests.get(url,params=None,**kwargs)

    url:拟获取页面上的url链接

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

    **kwargs:12个控制访问的参数

import requests
r = requests.get('https://www.baidu.com')
#检测状态请求的状态码 200则成功,反之则失败
print(r.status_code)
#检测r的类型
type(r)
#返回get请求页面的头部信息
r.headers

  Response对象的属性

  Response的编码

  r.encoding:如果header中不存在charset,则认为编码为ISO-8859-1

  r.apparent_encoding:根据网页内容分析出的编码方式

  

  Requests库的异常

import requests
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()#如果状态不是200,则引发 HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return '产生异常'
if __name__ == '__main__':
    url = 'http://www.baidu.com'
    print(getHTMLText(url))

  2、HTTP协议与requests库的方法

  requests库的七个方法:

  HTTP协议:    

    HTTP,Hypertext Transfer Protocol,超文本传输协议。

    HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。

    HTTP协议采用URL作为定位网络资源的标识。

  URL格式如下

    http://host[:port][path]

    host:合法的Internet主机域名或ip地址

    port:端口号,缺省端口为80

    path:请求资源的路径

  理解URL:

    URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

  HTTP协议对资源的操作:

 

  理解PATCH和PUT的区别:

    假设URL位置有一组数据UserInfo(用户信息),包括Username,UserID等20个字段

    需求:用户修改Username,其他的不变

    *采用PATCH,仅向URL提交Username的局部更新请求。

    *采用PUT,必须将所有的20个字段一并提交到URL,未提交字段被删除。

      比较得知:PATCH的最主要好处:节省网络带宽。

  requests库的post()或put()方法:

    如果想URL POST一个字典,则会自动编码为form(表单).

    如果想URL POST一个字符串,则会自动编码为data.

  3、详解requests的七个方法

    1)、requests.request(method,url,**kwargs)

      method:请求方式,对应get/put/post等其中

      url:拟获取页面的url链接

      **kwargs:控制访问参数,共13个

      **kwargs:控制访问参数,均为可选项

        1)、params:字典或字节序列,作为参数增加到url中

kv = {'key1':'value1'.'key2':'value2'}
r = requests.request('GET','http://python123.io/ws',params=kv)
print(r.url)
#运行结果为https://python123.io/ws?key1=value1&key2=value2

        2)、data:字典、字节序列或文件对象,作为Request的内容

        3)、json:JSON格式的数据,作为Request的内容

import requests
#json
kv = {'key1':'value1'}
r = requests.request('POST','http://python123.io/ws',json=kv)

        4)、headers:字典,HTTP定制头

#headers
hd = {'user-agent': 'Chrome/10'}
r = requests.request('POST','http://python123.io/ws',header=hd)

        5)、cookies:字典或CookieJar,Request中的cookie

        6)、auth:元组,支持HTTP认证功能

        7)、files:字典类型,传输文件

#files
fs = {'file':open('data.xls','rb')}
r = requests.request('POST','http://python123.io/ws',files=fs)

        8)、timeout:设定超时时间,秒为单位    

#timeout
r = requests.request('GRT','http://www.baidu.com',timeout=10)
#如果超过访问时间则会返回一个timeout的异常

        9)、proxies:字典类型,设定访问代理服务器,可以增加登陆认证(可有效隐藏用户爬取网页的源的ip地址信息)

#proxies
pxs = {'http': 'http://user:pass@10.10,10,1:1234',
        'https': 'http://10,10.10.1:4321'}
r = requests.request('GET','http://www.baidu.com',proxies=pxs)

        10)、allow_redirects:True/False,默认为True,重定向开关

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

          12)、verify:True/False,默认为True,认证SSL证书开关

        13)、cert:本地SSL证书路径

    2、requests.get(url,params=None,**kwargs)

      url:拟获取页面上的url链接

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

      **kwargs:12个控制访问的参数

    3、requests.head(url,**kwargs)

      url:拟获取页面上的url链接

      **kwargs:13个控制访问的参数

    4、requests.post(url,data=None,json=None,**kwargs)

      url:拟获取页面上的url链接

      data:字典、字节序列或文件对象,作为Request的内容

      json:JSON格式的数据,作为Request的内容

      **kwargs:11个控制访问的参数

    5、requests.put(url,data=None,**kwargs)

      url:拟获取页面上的url链接

      data:字典、字节序列或文件对象,作为Request的内容

      **kwargs:12个控制访问的参数

    6、requests.patch(url,data=None,**kwargs)    

      url:拟获取页面上的url链接

      data:字典、字节序列或文件对象,作为Request的内容

      **kwargs:12个控制访问的参数

    7、requests.delete(url,**kwargs)

      url:拟获取页面上的url链接

      **kwargs:13个控制访问的参数

原文地址:https://www.cnblogs.com/fb1704011013/p/11099610.html