requests(第三方模块) 请求、登录、下载网页

时间:2023-03-10 05:04:15
requests(第三方模块) 请求、登录、下载网页

import requests  #http://docs.python-requests.org/en/latest/api/ 说明文档

'''

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

requests.head(url,**kwargs)

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

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

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

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

requests.delete(url,**kwargs)

上述7种方法返回的都是(Requests.)Response对象

method~请求对象的方法,猜测可选值是head,get,post,put,patch,delete

url~请求对象的URL

以下的可选参数都可通过**kwargs字典参数传入

params~ Dictionary or bytes to be sent in the query(疑问) string for the Request

data~ 需要传入request中的(字典类型,元组构成的列表类型[(key,value)](will be form encoded),二进制类型或file-like类型的)对象

json~ 需要被传入request的json类型数据

header~随request传入的字典类型的HTTP Headers 数据

files~ 字典类型的数据形如{'name':file-like-objects}或{'name':file-tuple}进行各种编码形式的上传。file-tuple可以是一个两、三、四元素的元组

('filename',fileobj,'content_type',custom_headers),'content-type'是str类型的描述文本的格式的字符串。

custom_headers是一个字典类型的参数,包含一些需要被添加到文件上的额外的标题信息

auth~认证元组 to enable Basic/Digest/Custom HTTP Auth

timeout~(入参为浮点类型或元组类型),浮点类型的话表示多少秒后放弃等待接收服务器发送的数据,2元素的元组格式为(connect timeout,read timeout)

allow_redirects~(布尔类型入参)是否允许 重定向,默认为True (GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD)redirection

proxies~ 字典类型的URL代理映射协议 Dictionary mapping proctocol to the URL of the proxy

verify~ 布尔型数据,表示我们是否核实了服务器的TLS证书,或者字符串型数据,表示可链接到CA bundle的路径。默认值是True

stream~ 如果设置为False,response content 就会立即被下载

cert~  如果是字符串就就是通往ssl client 某个文件的路径(.pem) 元组类型的话形如('cert','key')

'''

#Requests  Exceptions

'''

requests.RequestException(*args,**kwargs)  包含大量的错误类型There was an ambiguous exception that occurred while handling your request.

requests.ConnectionError(*args,**kwargs)  连接类型的错误 A Connection error occurred

requests.HTTPError(*args,**kwargs) HTTP错误 An HTTP error occurred

requests.URLRequired(*args,**kwargs) 无效的URL地址 A valid URL is required to make a request

requests.TooManyRedirects(*args,**kwargs)  重定向太多次了 TOO many redirects

requests.ConnectTimeout(*args,**kwargs) 连接超时 Requests that produced this error are safe to retry

requests.ReadTimeout(*args,**kwargs) 服务器没有返回任何数据,在给定的时间里

requests.Timeout(*args,**kwargs)   请求超时,捕获该错误类型,ConnectTimeout和ReadTimeout类型的错误都会被捕获。

'''

#requests.Session类

#Cookie :当访问某个站点时,随某个HTML网页发送到你的浏览器中的一小段信息;网络跟踪器(记录上网用户信息的软件)

#session提供了持续的cookie(记录,用户追踪?),连接池(不懂什么意思),和配置信息

import requests

s=requests.Session()

s.get('http://httpbin.org/get')

#也可写成

with requests.Session() as s :

s.get('http://httpbin.org/get')

'''

auth=None  Default Authentication tuple or object to attach to Request.

cert=None  SSL client certificate default, if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.

close()  Closes all adapters(适配器?) and as such the session

cookies=None 包含session里设置的所有未完成的cookie。装cookie的容器。By default it is a RequestsCookieJar, but may be any other cookielib.CookieJar compatible object.

下面的方法同requests的方法,返回的都是requests.Response对象

{delete(url,**kwargs)

get(url,**kwargs)

head(url,**kwargs)

options(url,**kwargs)

post(url,data=None,json=None,**kwargs)

put(url,data=None,**kwargs)

request(method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True,

proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None)比requests.request()多一个参数cookies

cookies ~ Dict or CookieJar Object to send with Request

}

send(request,**kwargs)  传递给一个准备好的request对象,返回类型requests.Response

stream=None  Stream response content default.

trust_env=None 为代理配置信息标记的受信任设置,默认是认证的和熟悉的default authentication and similar

verify=None   默认SSL认证 SSL(Security Socket Layer 加密套接字协议层)