加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Python中requests的性能是什么 怎样应用

发布时间:2023-08-14 12:53:32 所属栏目:语言 来源:
导读:今天小编跟大家讲解下有关“Python中requests的功能是什么,怎样应用”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。Requests 是使用 Apache2 Lic

今天小编跟大家讲解下有关“Python中requests的功能是什么,怎样应用”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。

Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

1. GET请求

# 1、无参数实例

import requests

ret = requests.get('https://github.com/timeline.json')

print(ret.url)

print(ret.text)

# 2、有参数实例

import requests

payload = {'key1': 'value1', 'key2': 'value2'}

ret = requests.get("http://httpbin.org/get", params=payload)

print(ret.url)

print(ret.text)

2. POST请求

# 1、基本POST实例

import requests

payload = {'key1': 'value1', 'key2': 'value2'}

ret = requests.post("http://httpbin.org/post", data=payload)

print(ret.text)

# 2、发送请求头和数据实例

import requests

import json

url = 'https://api.github.com/some/endpoint'

payload = {'some': 'data'}

headers = {'content-type': 'application/json'}

ret = requests.post(url, data=json.dumps(payload), headers=headers)

print(ret.text)

print(ret.cookies)

3. 其它请求

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

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

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

requests.head(url, **kwargs)

requests.delete(url, **kwargs)

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

requests.options(url, **kwargs)

# 以上方法均是在此方法的基础上构建

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

4. 请求参数

def request(method, url, **kwargs):

"""Constructs and sends a :class:`Request <Request>`.

:param method: method for the new :class:`Request` object.

:param url: URL for the new :class:`Request` object.

:param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.

:param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.

:param json: (optional) json data to send in the body of the :class:`Request`.

:param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.

:param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.

:param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload.

``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')``

or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string

defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers

to add for the file.

:param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.

:param timeout: (optional) How long to wait for the server to send data

before giving up, as a float, or a :ref:`(connect timeout, read

timeout) <timeouts>` tuple.

:type timeout: float or tuple

:param allow_redirects: (optional) Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.

:type allow_redirects: bool

:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.

:param verify: (optional) whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to ``True``.

:param stream: (optional) if ``False``, the response content will be immediately downloaded.

:param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.

:return: :class:`Response <Response>` object

:rtype: requests.Response

Usage::

>>> import requests

>>> req = requests.request('GET', 'http://httpbin.org/get')

<Response [200]>

"""

5. 参数示例

def param_method_url():

# requests.request(method='get', url='http://127.0.0.1:8000/test/')

# requests.request(method='post', url='http://127.0.0.1:8000/test/')

pass

def param_param():

# - 可以是字典

# - 可以是字符串

# - 可以是字节(ascii编码以内)

# requests.request(method='get',

# url='http://127.0.0.1:8000/test/',

# params={'k1': 'v1', 'k2': '水电费'})

# requests.request(method='get',

# url='http://127.0.0.1:8000/test/',

# params="k1=v1&k2=水电费&k3=v3&k3=vv3")

# requests.request(method='get',

# url='http://127.0.0.1:8000/test/',

# params=bytes("k1=v1&k2=k2&k3=v3&k3=vv3", encoding='utf8'))

# 错误

# requests.request(method='get',

# url='http://127.0.0.1:8000/test/',

# params=bytes("k1=v1&k2=水电费&k3=v3&k3=vv3", encoding='utf8'))

pass

def param_data():

# 可以是字典

# 可以是字符串

# 可以是字节

# 可以是文件对象

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# data={'k1': 'v1', 'k2': '水电费'})

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# data="k1=v1; k2=v2; k3=v3; k3=v4"

# )

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# data="k1=v1;k2=v2;k3=v3;k3=v4",

# headers={'Content-Type': 'application/x-www-form-urlencoded'}

# )

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# data=open('data_file.py', mode='r', encoding='utf-8'), # 文件内容是:k1=v1;k2=v2;k3=v3;k3=v4

# headers={'Content-Type': 'application/x-www-form-urlencoded'}

# )

pass

def param_json():

# 将json中对应的数据进行序列化成一个字符串,json.dumps(...)

# 然后发送到服务器端的body中,并且Content-Type是 {'Content-Type': 'application/json'}

requests.request(method='POST',

url='http://127.0.0.1:8000/test/',

json={'k1': 'v1', 'k2': '水电费'})

def param_headers():

# 发送请求头到服务器端

requests.request(method='POST',

url='http://127.0.0.1:8000/test/',

json={'k1': 'v1', 'k2': '水电费'},

headers={'Content-Type': 'application/x-www-form-urlencoded'}

)

def param_cookies():

# 发送Cookie到服务器端

requests.request(method='POST',

url='http://127.0.0.1:8000/test/',

data={'k1': 'v1', 'k2': 'v2'},

cookies={'cook1': 'value1'},

)

# 也可以使用CookieJar(字典形式就是在此基础上封装)

from http.cookiejar import CookieJar

from http.cookiejar import Cookie

obj = CookieJar()

obj.set_cookie(Cookie(version=0, name='c1', value='v1', port=None, domain='', path='/', secure=False, expires=None,

discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False,

port_specified=False, domain_specified=False, domain_initial_dot=False, path_specified=False)

)

requests.request(method='POST',

url='http://127.0.0.1:8000/test/',

data={'k1': 'v1', 'k2': 'v2'},

cookies=obj)

def param_files():

# 发送文件

# file_dict = {

# 'f1': open('readme', 'rb')

# }

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# files=file_dict)

# 发送文件,定制文件名

# file_dict = {

# 'f1': ('test.txt', open('readme', 'rb'))

# }

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# files=file_dict)

# 发送文件,定制文件名

# file_dict = {

# 'f1': ('test.txt', "hahsfaksfa9kasdjflaksdjf")

# }

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# files=file_dict)

# 发送文件,定制文件名

# file_dict = {

# 'f1': ('test.txt', "hahsfaksfa9kasdjflaksdjf", 'application/text', {'k1': '0'})

# }

# requests.request(method='POST',

# url='http://127.0.0.1:8000/test/',

# files=file_dict)

pass

def param_auth():

from requests.auth import HTTPBasicAuth, HTTPDigestAuth

ret = requests.get('https://api.github.com/user', auth=HTTPBasicAuth('wupeiqi', 'sdfasdfasdf'))

print(ret.text)

# ret = requests.get('http://192.168.1.1',

# auth=HTTPBasicAuth('admin', 'admin'))

# ret.encoding = 'gbk'

# print(ret.text)

# ret = requests.get('http://httpbin.org/digest-auth/auth/user/pass', auth=HTTPDigestAuth('user', 'pass'))

# print(ret)

#

def param_timeout():

# ret = requests.get('http://google.com/', timeout=1)

# print(ret)

# ret = requests.get('http://google.com/', timeout=(5, 1))

# print(ret)

pass

def param_allow_redirects():

ret = requests.get('http://127.0.0.1:8000/test/', allow_redirects=False)

print(ret.text)

def param_proxies():

# proxies = {

# "http": "61.172.249.96:80",

# "https": "http://61.185.219.126:3128",

# }

# proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}

# ret = requests.get("http://www.proxy360.cn/Proxy", proxies=proxies)

# print(ret.headers)

# from requests.auth import HTTPProxyAuth

#

# proxyDict = {

# 'http': '77.75.105.165',

# 'https': '77.75.105.165'

# }

# auth = HTTPProxyAuth('username', 'mypassword')

#

# r = requests.get("http://www.google.com", proxies=proxyDict, auth=auth)

# print(r.text)

pass

def param_stream():

ret = requests.get('http://127.0.0.1:8000/test/', stream=True)

print(ret.content)

ret.close()

# from contextlib import closing

# with closing(requests.get('http://httpbin.org/get', stream=True)) as r:

# # 在此处理响应。

# for i in r.iter_content():

# print(i)

def requests_session():

import requests

session = requests.Session()

### 1、首先登陆任何页面,获取cookie

i1 = session.get(url="http://dig.chouti.com/help/service")

### 2、用户登陆,携带上一次的cookie,后台对cookie中的 gpsd 进行授权

i2 = session.post(

url="http://dig.chouti.com/login",

data={

'phone': "8615131255089",

'password': "xxxxxx",

'oneMonth': ""

}

)

i3 = session.post(

url="http://dig.chouti.com/link/vote?linksId=8589623",

)

print(i3.text)

6. requests模拟登陆GitHub

import requests

from bs4 import BeautifulSoup

def login_github():

"""

通过requests模块模拟浏览器登陆GitHub

:return:

"""

# 获取csrf_token

r1 = requests.get('https://github.com/login') # 获得get请求的对象

s1 = BeautifulSoup(r1.text, 'html.parser') # 使用bs4解析HTML对象

token = s1.find('input', attrs={'name': 'authenticity_token'}).get('value') # 获取登陆授权码,即csrf_token

get_cookies = r1.cookies.get_dict() # 获取get请求的cookies,post请求时必须携带

# 发送post登陆请求

'''

post登陆参数

commit Sign+in

utf8

authenticity_token E961jQMIyC9NPwL54YPj70gv2hbXWJ…fTUd+e4lT5RAizKbfzQo4eRHsfg==

login JackUpDown(用户名)

password **********(密码)

'''

r2 = requests.post(

'https://github.com/session',

data={

'commit': 'Sign+in',

'utf8': '',

'authenticity_token': token,

'login': 'JackUpDown',

'password': '**********'

},

cookies=get_cookies # 携带get请求的cookies

)

login_cookies = r2.cookies.get_dict() # 获得登陆成功的cookies,携带此cookies就可以访问任意GitHub页面。

# 携带post cookies跳转任意页面

r3 = requests.get('https://github.com/settings/emails', cookies=login_cookies)

print(r3.text)

以上就是关于“Python中requests的功能是什么,怎样应用”的相关知识,感谢各位的阅读。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章