requests库详解

各种请求方式
- get
- post
- push
- delete
- head
- options

get请求

import requests
# 1.基本get请求
response = requests.get('http://www.baidu.com')

# 2.带参数的get请求
response2 = requests.get('http://www.baidu.com/get?name=germy&age=22')

# 3.将参数传入params参数中来实现2中一样的功能
data = {
    'name': 'germy',
    'age': 22
}
response3 = requests.get('http://www.baidu.com', params=data)

# 4.解析jason(如果返回结果是一个json, 则调用该方法就可以直接返回json)
response4 = requests.get('http://httpbin.org/get')
print(response4.json())

# 5.获取二进制数据(图片, 视频...)
response5 = requests.get('http://github.com/favicon.ico')
with open('icon.ico', 'wb') as f:
    f.write(response5.content)

# 6.添加headers(传入headers参数)
headers = {
    'User-Agent': '...'
}
response6 = requests.get('http://zhihu.com', headers=headers)

post请求

import requests
# 1.基本post请求
data = {'name': 'germy', 'age': 22}
response = requests.post('http://www.baidu.com', data=data)

# 2. 添加headers
headers =  {
    'UserAgent': '...',
}
response2 = requests.post('http://www.baidu.com', data=data, headers=headers)

response(响应)

response的属性

  • response.status_code(状态码)
  • response.headers
  • response.cookies
  • response.url
  • response.history(访问历史记录)

response的状态码判断

1
2

高级操作

文件上传(post)

import requests
files = {'file': open('icon.ico', 'rb')}
response = requests.post('http://httpbin.org/post', files=files)
print(response.text)

获取cookies

import requests
response = requests.get('http://www.baidu.com')
cookies = response.cookies.items()
for key, value in cookies:
    print(key, ':', value)

保持会话(维持一个登陆状态)

先post用户名密码登陆, 再在登陆状态下继续访问网站

import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
response = s.get('http://httpbin.org/cookies')
print(response.text)

验证证书

import requests
url = 'https://www.12306.cn'
# 在访问https这种网页时, requests会查看证书, 但是12306的证书有错, 所以会报错
response = requests.get(url)
print(response.status_code)
# 将verify参数改为False可避免上一个错, 但是依然会弹出广告
response2 = requests.get(url, verify=False)
print(response2.status_code)
# 要想避免这个警告
from requests.packages import urllib3
urllib3.disable_warnings()
response3 = requests.get(url, verify=False)
print(response3.status_code)

代理设置

import requests
proxies = {
    'http': 'http://127.0.0.1:3095',
    'https': 'https://127.0.0.1:3095'
}
response = requests.get('http://www.google.com', proxies=proxies)
print(response.status_code)

超时设置

import requests
requests.get('http://www.baidu.com', timeout=1)

认证设置(某些网站在你登陆的时候就要输入用户名和密码)

import requests
from requests.a0uth import HTTPBasicAuth

r = requests.get('http://120.27.34.24:9001', auth=HTTPBasicAuth('user', '123'))

r2 = requests.get('http://120.27.34.24:9001', auth=('user', '123'))

异常处理(先捕捉子类, 再捕捉父类的异常)

import requests
from requests.exceptions import ReadTimeout, ConnectionError, RequestException
try:
    response = requests.get('http://httpbin.org/get', timeout=.5)
    print(response.status_code)
except ReadTimeout:
    print('Time out')
except ConnectionError:
    print('ConnectionError')
except RequestException:
    print('error')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值