您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python中第三方库Requests库的高级用法详解

5b51 2022/1/14 8:23:45 python 字数 9778 阅读 607 来源 www.jb51.cc/python

一、Requests库的安装 利用pip安装,如果你安装了pip包(一款Python包管理工具,不知道可以百度哟),或者集成环境,比如Python(x,y)或者anaconda的话,就可以直接使用pip安装Python的库。

概述

$ pip install requests

#get请求方法
 >>> r = requests.get('https://api.github.com/user',auth=('user','pass'))
#打印get请求的状态码
 >>> r.status_code
200
#查看请求的数据类型,可以看到是json格式,utf-8编码
 >>> r.headers['content-type']
'application/json; charset=utf8'
 >>> r.encoding
'utf-8'
#打印请求到的内容
 >>> r.text
u'{"type":"User"...'
#输出json格式数据
 >>> r.json()
 {u'private_gists': 419,u'total_private_repos': 77,...}

#小例子
import requests

r = requests.get('http://www.baidu.com')
print type(r)
print r.status_code
print r.encoding
print r.text
print r.cookies
'''请求了百度的网址,然后打印出了返回结果的类型,状态码,编码方式,Cookies等内容 输出:'''
<class 'requests.models.Response'>
200
UTF-8
<RequestsCookieJar[]>

r = requests.post("http://httpbin.org/post")
r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options(http://httpbin.org/get)

r = requests.get("http://httpbin.org/get")
#如果想要加参数,可以利用 params 参数:
import requests
payload = {'key1': 'value1','key2': 'value2'}
r = requests.get("http://httpbin.org/get",params=payload)
print r.url

#输出:http://httpbin.org/get?key2=value2&key1=value1

["foo","bar",{
"foo": "bar"
}]
#利用如下程序请求并解析:
import requests
r = requests.get("a.json")
print r.text
print r.json()
'''运行结果如下,其中一个是直接输出内容,另外一个方法是利用 json() 方法 解析,感受下它们的不同:'''
["foo",{
"foo": "bar"
}]
[u'foo',u'bar',{u'foo': u'bar'}]

r = requests.get('https://github.com/timeline.json',stream=True)
r.raw
#输出
<requests.packages.urllib3.response.HTTPResponse object at 0x101194810>
r.raw.read(10)
'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'

import requests

payload = {'key1': 'value1','key2': 'value2'}
headers = {'content-type': 'application/json'}
r = requests.get("http://httpbin.org/get",params=payload,headers=headers)
print r.url
#通过headers参数可以增加请求头中的headers信息

import requests

payload = {'key1': 'value1','key2': 'value2'}
r = requests.post("http://httpbin.org/post",data=payload)
print r.text
#运行结果如下:
{
"args": {},"data": "","files": {},"form": {
"key1": "value1","key2": "value2"
},"headers": {
"Accept": "*/*","Accept-Encoding": "gzip,deflate","Content-Length": "23","Content-Type": "application/x-www-form-urlencoded","Host": "http://httpbin.org","User-Agent": "python-requests/2.9.1"
},"json": null,"url": "http://httpbin.org/post"
}

import json
import requests

url = 'http://httpbin.org/post'
payload = {'some': 'data'}
r = requests.post(url,data=json.dumps(payload))
print r.text

#运行结果:
{
"args": {},"data": "{\"some\": \"data\"}","form": {},"Content-Length": "16","json": {
"some": "data"
},"url": "http://httpbin.org/post"
}

#新建一个 test.txt 的文件内容写上 Hello World!
import requests

url = 'http://httpbin.org/post'
files = {'file': open('test.txt','rb')}
r = requests.post(url,files=files)
print r.text

{
"args": {},"files": {
"file": "Hello World!"
},"Content-Length": "156","Content-Type": "multipart/form-data; boundary=7d8eb5ff99a04c11bb3e862ce78d7000","url": "http://httpbin.org/post"
}

with open('massive-body') as f:
requests.post('http://some.url/streamed',data=f)

import requests

url = 'Example Domain'
r = requests.get(url)
print r.cookies
print r.cookies['example_cookie_name']

import requests

url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url,cookies=cookies)
print r.text
#输出:
'{"cookies": {"cookies_are": "working"}}'

requests.get(‘Build software better,together',timeout=0.001)

import requests

requests.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = requests.get("http://httpbin.org/cookies")
print(r.text)
#结果是:
{
"cookies": {}
}

import requests

s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)
#在这里我们请求了两次,一次是设置 cookies,一次是获得 cookies
{
"cookies": {
"sessioncookie": "123456789"
}
}

import requests

s = requests.Session()
s.headers.update({'x-test': 'true'})
r = s.get('http://httpbin.org/headers',headers={'x-test2': 'true'})
print r.text
'''通过 s.headers.update 方法设置了 headers 的变量。然后我们又在请求中 设置了一个 headers,那么会出现什么结果?很简单,两个变量都传送过去了。 运行结果:'''
{
"headers": {
"Accept": "*/*","User-Agent": "python-requests/2.9.1","X-Test": "true","X-Test2": "true"
}
}

r = s.get('http://httpbin.org/headers',headers={'x-test': 'true'})

#它会覆盖掉全局的配置:
{
"headers": {
"Accept": "*/*","X-Test": "true"
}
}

r = s.get('http://httpbin.org/headers',headers={'x-test': None})
{
"headers": {
"Accept": "*/*","User-Agent": "python-requests/2.9.1"
}
}

import requests

r = requests.get('https://kyfw.12306.cn/otn/',verify=True)
print r.text
#结果:
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_Failed] certificate verify Failed (_ssl.c:590)

import requests

r = requests.get('Build software better,verify=True)
print r.text

import requests

r = requests.get('https://kyfw.12306.cn/otn/',verify=False)
print r.text

import requests

proxies = {
"https": "http://41.118.132.69:4433"
}
r = requests.post("http://httpbin.org/post",proxies=proxies)
print r.text
#也可以通过环境变量 HTTP_PROXY 和 HTTPS_PROXY 来配置代理
export HTTP_PROXY="http://10.10.1.10:3128"
export HTTPS_PROXY=http://10.10.1.10:1080

总结

以上是编程之家为你收集整理的Python中第三方库Requests库的高级用法详解全部内容,希望文章能够帮你解决Python中第三方库Requests库的高级用法详解所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶