requests库

14 篇文章 0 订阅
8 篇文章 0 订阅

response = requests.get(url) 得到的是响应类型
response.text 得到的是字符串类型
response.json()与json.loads(response.text)得到的结果是一样的,都是字典类型
响应类型可以直接调用json()跟loads调用response.text类型的效果是一样的,但是两者的参数不同

获取二进制数据
response = requests.get(图片地址)
response.text—>返回的是str类型
response.content—>返回的是bytes类型
需要对二进制数据保存时,就要返回二进制形式,.content

高级操作
文件上传:需要以post方式发送请求

import requests

files = {"file":open("favicon.ico","rb")}
response = requests.post("http://httpbin.org/post",files=files)
获取cookie:<class 'requests.cookies.RequestsCookieJar'>
import requests
response = requests.get('http://www.baidu.com')
print(response.cookies)
for item in response.cookies.items():
    print(key+'='+value)

会话维持(模拟登陆):

import requests

s = requests.Session()#实例化一个Session对象
s.get('http://httpbin.org/cookies/set/number/12345678')
response = s.get('http://httpbin.org/cookies')

发起的两次请求相当于一次set cookie,一次get cookie

print(response.text)

证书验证:
在发送https请求的时候,首先会验证证书的合法性,需要跳过证书的话,可以设置verify=False
消除警告信息urllib3.disable_warnings()
以上两个配合使用

import requests

from requests.packages import urllib3
urllib3.disable_warnings()
response = requests.get('https://www.12306.cn',verify=False)
print(response.status_code)

与下面得到的结果一样

import requests

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

代理设置:
如果不支持HTTP、HTTPS代理,可以设置socks代理
HTTP代理:能够代理客户机的HTTP访问,主要是代理浏览器访问网页,它的端口一般为80、8080、3128等;
SOCKS代理:SOCKS代理与其他类型的代理不同,它只是简单地传递数据包,而并不关心是何种应用协议,既可以是HTTP请求,所以SOCKS代理服务器比其他类型的代理服务器速度快得多。
SOCKS代理又分为SOCKS4和SOCKS5,二者不同的是SOCKS4代理只支持TCP协议(即传输控制协议),而SOCKS5代理既支持TCP协议又支持UDP协议(即用户数据包协议),还支持各种身份验证机制、服务端域名解析等。SOCKS4能做到的SOCKS5都可得到,但是SOCKS5能够做到的SOCKS4则不一定能做到,比如我们常用的聊天工具QQ在使用代理时就要求用SOCKS5代理,因为它需要使用UDP来传输协议。
如果不想被别人看到真实IP,用高匿的SOCKS5代理IP就可以的。
超时设置:timeout=xxx

import requests
from requests.exceptions import ReadTimeout
try:
    response=requests.get('http://httpbin.org/get',timeout=0.5)
    print(response.status_code)
except ReadTimeout:
    print('Timeout')

不在0.5秒内响应的话,则返回提示信息’Timeout’
认证设置(需要登录才能够查看内容):

import requests
from requests.auth import HTTPBasicAuth

r = requests.get('http://code.tarena.com.cn/AIDCode/aid1904/',
                 auth=HTTPBasicAuth('tarenacode', 'code_2013'))
print(r.status_code)

或者将元组形式的账号密码传递给auth也是可以的,这个时候就不需要引入HTTPBasicAuth模块
import requests

r = requests.get('http://code.tarena.com.cn/AIDCode/aid1904/',auth=('tarenacode', 'code_2013'))
print(r.status_code)

异常处理(保证程序不间断运行,清晰分析出现的错误)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值