requests模块--python发送http请求

requests模块

在Python内置模块(urllib、urllib2、httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的完成浏览器可有的任何操作。Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库。

requests使用

一、GET请求

向 https://github.com/timeline.json 发送一个GET请求,将请求和响应相关均封装在 ret 对象中。

1、无参数实例


1

2

3

4

5

6

import requests

 

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

 

print ret.url

print ret.text

2、有参数实例


1

2

3

4

5

6

7

import requests

 

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

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

 

print ret.url

print ret.text

二、POST请求

向https://api.github.com/some/endpoint发送一个POST请求,将请求和相应相关的内容封装在 ret 对象中。

1、基本POST实例


1

2

3

4

5

6

import requests

 

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

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

 

print ret.text

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


1

2

3

4

5

6

7

8

9

10

11

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、其他请求


1

2

3

4

5

6

7

8

9

10

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)

更多参数


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

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‘: (‘filename‘, fileobj)}``) for multipart encoding upload.

    :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]>

    """

    # By using the ‘with‘ statement we are sure the session is closed, thus we

    # avoid leaving sockets open which can trigger a ResourceWarning in some

    # cases, and look like a memory leak in others.

    with sessions.Session() as session:

        return session.request(method=method, url=url, **kwargs)

更多详细资料

更多requests模块相关的?文档见:http://cn.python-requests.org/zh_CN/latest/

来自为知笔记(Wiz)

时间: 2024-11-06 15:33:12

requests模块--python发送http请求的相关文章

python发送网络请求

1.使用urllib模块 get请求: res = urlopen(url) from urllib.request import urlopen url = 'http://www.nnzhp.cn' print(urlopen(url))#返回http.client.HTTPResponse object at 0x00000235BA25A160 print(urlopen(url).read().decode())#返回get到的页面的源代码 # decode是将base类型转为enco

Python 学习之urllib模块---用于发送网络请求,获取数据

1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1)urllib.request用法 1)urlopen函数:用于打开一个URL(urlopen返回一个类文件对象,可以像文件一样操作) 例如: import urllib.request web=urllib.request.urlopen('http://www.baidu.com') conten

Python 学习之urllib模块---用于发送网络请求,获取数据(4)

承接将查询城市编码的结果保存到文件中,以字典的形式保存,目的是为了在查询某个城市的天气的时候,能够通过输入的城市名称,找到对应的城市编码.所以此结果字典的数据结构,就是city={城市名称:城市编码} so,可以这样编写: 当然,你可以打印出结果看看. 现在我们就需要将这个结果写到文件中去了.注意,这里就需要用到昨天说的python3编码的知识啦,结尾有提到哦. import  codecs ff=codecs.open('c:\Python34\city10.py','w','utf-8')

Python 学习之urllib模块---用于发送网络请求,获取数据(5)

查询城市天气最后一节 需要导入上一节的结果city10.py #!/usr/bin/python# -*- coding: UTF-8 -*-import urllib.requestfrom  city10 import city     #从city10.py里导入city变量名称import json         #json包,loads的用法import traceback cityname=input('你想查询什么城市的天气?\n') citycode=city.get(city

Python 学习之urllib模块---用于发送网络请求,获取数据(3)

上节内容,是得到了省/直辖市编码,如web='http://m.weather.com.cn/data5/city01',我们需要继续获取此接口的数据,于是进行下面的操作 for  i  in   b:                #i=b[0],b[1],b[2]...... code=i.split('|')[0] web='http://m.weather.com.cn/data5/city%s' web1=web %code content2=urllib.request.urlope

Python 学习之urllib模块---用于发送网络请求,获取数据(2)

接着上一次的内容. 先说明一下关于split()方法:它通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串(把一个字符串分割成很多字符串组成的list列表) 语法:str.split(str="", num=string.count(str)). 参数:str 分隔符,默认为空格.num 分割次数 返回值:返回分割后的字符串列表 例如:你需要将一个英语句子中的每一个单词拿出来单独处理,就可以将其进行分割. 如:a=' I am a new stude

转载:python发送HTTP请求

1. [代码]GET 方法 import httplib #----------------------------- conn = httplib.HTTPConnection("www.python.org") conn.request("GET", "/index.html") r1 = conn.getresponse() print r1.status, r1.reason 06 200 OK data1 = r1.read() con

python发送post请求发送json数据时,报415的原因和处理方法。

415   Unsupported media type. 不支持MEDIA类型 这代表服务无法处理你提交的数据格式. 处理起来很简单,在你的header里指定一下格式. 加上一句代码 headers = {"Content-Type": "application/json"}

Learn_Day12 模块2:模块1内容补充、requests模块、xml模块

模块1内容补充: vars()    python自动设置的全局变量 在py文件开头用三引号注释,表示是对py文件本身的注释 __doc__    py文件本身的文件注释 __file__    文件路径 __package__    导入py文件(自定义模块)的位置(文件夹,目录),用"."分割 __cached__    缓存,python2版本无此属性 __name__    默认 __main__:主文件执行主函数前用作判断 json.loads(形似对象)    用于将形似列