requests

作者: harukou_ou | 来源:发表于2018-02-01 19:37 被阅读10次

HTTP 协议

HTTP: Hypertext Transfer Protocol.
URL:是通过http协议存取资源的一个Internet路径,对应一个数据资源。

  格式: http://host[:port][path]
  host:合法的Internet主机域名或IP地址
  port:端口号,缺省端口为80
  path:请求资源的路径

requests的7个方法:

1. requests.request()

requests.request(method,url,**kwargs)
#methon 请求方式 对应以上7种方法
#url 对应请求资源
#13个控制访问参数

**kwargs

1.params:字典或字节序列作为参数增加到url
例如:

>>> kv = {'k1':'v1','k2':'v2'}
>>> r = requests.request('GET','http://python123.io/ws',params = kv)
>>> print(r.url)
https://python123.io/ws?k1=v1&k2=v2

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

r = requests.request('POST','http://python123.io/ws',data = kv)

3.json:JSON格式的内容作为Request的内容

#kv为json格式
r = requests.request('POST','http://python123.io/ws',json = kv)

4.headers:字典,定制http头

#kv为字典
kv = {'user-agent':'chrome/10'}
r = requests.request('POST','http://python123.io/ws',headers = kv)

5.cookies:字典或CookieJar,Request中的cookie
6.auth:元组,支持http认证功能
7.files: 字典,传输文件

#向链接提交文件
fs = {'file': open('data.xls','rb')}
r = requests.request('POST','http://python123.io/ws',files = fa)

8.timeout :设定超时时间,s为单位
r = requests.request('GET','http://www.baidu.com',timeout =10)
9.proxies:字典类型,设定访问服务器,增加登录认证

#隐藏用户IP地址
pxs = {'http': 'http://user:pass@10.10.10.1:1234','https'://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,默认获取内容立即下载开关
12.verify:True/False ,默认认证SSL证书
13.cert:本地SSL证书路径
2.requests.get() #获取资源
requests.get(*url*,*params=None*,***kwarges*)

3. requests.head()#获取头部信息
r = requests.head(url)
r.headers

4.requests.post()#原资源后附加数据

>>> payload = {'key1':'value1','key2':'value2'}
# data = str,"data" = str;data = dict, "form" = dict
>>> r = requests.post('http://httpbin.org/post',data = payload)
>>> print(r.text)
{ 
  "data": "",
  "form": {
    "key1": "value1", 
    "key2": "value2"
  }
}

5. requests.put()#覆盖URL位置资源
与post类似,但原资源被覆盖

6. requests.patch()#修改资源

7.requests.delete()#删除资源


例子

import requests
r = requests.get('http://www.baidu.com)
r.status_code
r.encoding = 'utf-8'
r.text

requests的七个方法


Response对象的属性

import requests
r = requests.get('http://www.baidu.com')
r.status_code
type(r)
r.headers
  1. r.status_code
    200表示成功,404失败
  2. r.text
    url对应的内容
  3. r.encoding
    header中猜测的响应内容编码方式
  4. r.apparent_encoding
    从内容中分析出的响应内容编码方式
  5. r.content
    http相应内容的二进制形式

  1. r.request.headers
    请求头部信息

  1. r.raise_for_status()
    若不是200引发http error

Requests库6种常见异常

  1. requests.ConnectionError
  2. requests.HTTPError
  3. requests.URLRequired
  4. requests.TooManyRedirects
  5. requests.ConnectionTimeout
  6. requests.Timeout

Respose对象异常

r.raise_for_status() 
#如果不是200 ,产生requests.HTTPError

通用代码框架

import requests

def getHtmlText(url):
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return '产生异常'

if __name__ == '__main__':
    url = 'http://www.baidu.com'
    print(getHtmlText(url))

相关文章

网友评论

      本文标题:requests

      本文链接:https://www.haomeiwen.com/subject/qbudzxtx.html