python requests库详解_requests库详解 --Python3

本文介绍了requests库的基本使用,希望对大家有所帮助。

一、请求:

1、GET请求

coding:utf8

import requests

response = requests.get('http://www.httpbin.org/get')

print(response.text)

2、POST请求

# coding:utf8

import requests

data = {

'name': 'Thanlon',

'age': 22,

'sex': '男'

}

response = requests.post('http://httpbin.org/post', data=data)

print(response.text)

3、解析json

# coding:utf8

import requests, json

response = requests.get('http://www.httpbin.org/get')

print(type(response.text))

# print(response.text)

print(response.json()) # 等价于json.loads(response.text)

print(type(response.json()))

4、获取二进制数据

# coding:utf8

import requests

response = requests.get('https://www.baidu.com/img/dong_5af13a1a6fd9fb2c587e68ca5038a3c8.gif')

print(type(response.text))

print(type(response.content))

print(response.text)

print(response.content) # 二进制流

5、保存二进制文件(图片、视频)

# coding:utf8

import requests

response = requests.get('https://www.baidu.com/img/dong_5af13a1a6fd9fb2c587e68ca5038a3c8.gif')

with open('image.gif', 'wb') as f:

f.write(response.content)

f.close()

6、添加headers(有需要添加请求头信息,否则请求不到,如“知乎”)

# coding:utf8

# get请求,添加headers

import requests

headers = {

'user-agent': 'Mouser-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36zilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'

}

response = requests.get('https://www.zhihu.com/explore', headers=headers)

print(response.text)

#coding:utf8

#post请求,添加headers

import requests

data = {

'name': 'Thanlon',

'age': 22,

'sex': '男'

}

headers = {

'user-agent': 'Mouser-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36zilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'

}

response = requests.post('http://httpbin.org/post', data=data, headers=headers)

print(response.text)

二、响应(response)

1、response相关属性

#coding:utf8

import requests

response = requests.get('http://httpbin.org')

print(type(response.status_code), response.status_code)#状态码

print(type(response.headers), response.headers)#响应头

print(type(response.cookies), response.cookies)#cookie

print(type(response.url), response.url)#请求的url

print(type(response.history), response.history) # 访问的历史记录

2、状态码判断

#coding:utf8

import requests

response = requests.get('http://httpbin.org')

if not response.status_code == requests.codes.ok:#requests.codes.ok等价于200

pass

else:

print('Request Successfully')

3、文件上传

#coding:utf8

import requests

files = {

'file': open('image.gif', 'rb') # file可自定义

}

response = requests.post('http://httpbin.org/post', files=files)

print(response.text)

4、获取cookies

#coding:utf8

import requests

response = requests.get('http://www.baidu.com')

print(response.cookies)

print(response.cookies.items()) # [('BDORZ', '27315')]

for key, value in response.cookies.items():

print(key + '=' + value)

20190422195756753.jpg

5、会话维持:模拟登录(相当于一个浏览器在请求)

#coding:utf8

import requests

s = requests.Session()

s.get('http://httpbin.org/cookies/set/BDORZ/123456')

response = s.get('http://httpbin.org/cookies')

print(response.text)

6、证书验证

#coding:utf8

import requests

response = requests.get('https://www.12306.cn')

print(response.status_code)

#coding:utf8

import requests, urllib3

urllib3.disable_warnings() # 消除警报信息

response = requests.get('https://www.12306.cn', verify=False) # verify默认是True

print(response.status_code) # 没有进行证书验证,有警报信息,

7、指定证书

#coding:utf8

import requests

response = requests.get('https://www.12306.cn', cert={'/path/server.crt', '/path/key'})

print(response.status_code)

8、代理的设置

#coding:utf8

import requests

proxies = {

'http': 'http://127.0.0.1:9743',

'https': 'https://127.0.0.1:9743'

}

response = requests.get('https://www.taobao.com', proxies=proxies)

print(response.status_code)

9、代理的设置(存在用户名和密码的情况下)

#coding:utf8

import requests

proxies = {

'http': 'http://user:password@127.0.0.1:9743',

'https': 'https://user:password@127.0.0.1:9743'

}

response = requests.get('https://www.taobao.com', proxies=proxies)

print(response.status_code)

10、socks代理

import requests

proxies = {

'http': 'socks5://127.0.0.1:9743',

'https': 'socks5://127.0.0.1:9743'

}

response = requests.get('https://www.taobao.com', proxies=proxies)

print(response.status_code)

11、超时设置

#coding:utf8

import requests

response = requests.get('http://httpbin.org', timeout=1)

print(response.status_code)

12、认证设置

遇到401错误,即:请求被禁止,需要加上auth参数

#coding:utf8

import requests

from requests.auth import HTTPBasicAuth

response = requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))

#response = requests.get('https://api.github.com/user', auth=('user', 'pass'))

print(response.status_code)

13、异常处理

#coding:utf8

import requests

from requests.exceptions import ReadTimeout, HTTPError, RequestException, ConnectionError

try:

response = requests.get('http://httpbin.org', timeout=0.3)

print(response.status_code)

except ReadTimeout:

print('Timeout')

except HTTPError:

print('Http Error')

# except ConnectionError:

# print('Connection Error')

except RequestException:

print('Request Error ')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值