python自带request吗_python-request(基本用法)

之前学过urllib,但在实现功能时有些比较复杂,比如处理网页验证的cookies时,需要写opener和handle来处理。为了更加方便的实现这些操作,这就有了更为强大的库request,有了它,cookies、登录验证、代理设置等操作都不是事。

加载库:

import requests

1.实现get请求(还有其他参数后面介绍)

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

1.1 实例化对象r的一些方法:

type(r) # 实例化对象的类型:requests.models.Response

r.status_code # 状态码

type(r.text) # 响应体为str格式(有时是JSON格式,JSON = str(字典)则需要用json()方法转换为字典)

r.text # 响应体(返回的网页,后续提取网页信息)

r.cookies # 得到cookies

r.headers # 获取响应头

r.url # 获取URL

r.history

1.2 除了get请求外,类似的实现其他请求(还有其他参数后面介绍)

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')

1.3 在get请求中加入一些参数(等于加在网址上)

data = {

'name':'daguo',

'age':'23'

} # 添加get信息,相当于在url后附加:http://httpbin.org/get?age=22&name=daguo

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'

} # 添加请求头

r = requests.get('http://httpbin.org/get',params=data, headers = headers) # params:参数

2. 抓取二进制文件并保存(下载:图片、音乐、电影)

r = requests.get('https://github.com/favicon.ico') # 获取二进制文件的链接

with open('favicon.ico','wb') as f: # 新建文件二进制写入

f.write(r.content)

# 这里用r.content:为r中包含的原始内容(此处为二进制格式,直接写入即可)

# 不用r.text:因为text将r中内容转换为了字符串格式(r.text = str(r.content))

3. POST请求

r = requests.post('http://httpbin.org/post')

3.1 提交表单

data = {

'name':'daguo',

'age':'23'

} # 添加表单

# GET请求中的data是添加参数(args),相当于修改URL,params = data

# POST请求中的data是添加表单(form),能提供更多信息,data = data

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

3.2 文件上传

files = {'file':open('favicon.ico','rb')} # 以字典的形式上传文件

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

3.3 获取和设置cookies(可以直接通过请求头设置)

# 获取cookies

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

print(r.cookies) # 获取

# cookies里面都是一个个键值对,为方便咱看:

# 用item()将cookies装化成元组组成的列表

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

print(key + '=' + value)

# 设置cookies

headers = {

'Cookie':'从浏览器复制的已登录的Cookies',

'Host':'www.zhihu.com',

'User-Agent':'从浏览器复制下来'

} # 通过请求头设置Cookies

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

3.4 保持会话(Session)

使会话保持连续,即cookies动态变化,不需要手动操控

s = requests.Session()

s.get('http://httpbin.org/cookies/set/number/123456789')

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

print(r.text)

# 运行结果

{

'cookies':{

'number':123456789

}

}

SSL证书验证

有的网站需要验证证书,没证书不让访问

通过verify强制让网站不验证

verify = True(验证)

verify = False(验证)

r = requests.get('https://www.12306.cn',varify = False)

虽然不验证但是有个警告建议验证

解决方案有三种:1.忽略警告;2.捕获警告到日志;3.指定本地证书进行验证

1.忽略警告

import requests

from requests.packages import urllib3

urllib3.disable_warnings()

r = requests.get('https://www.12306.cn',varify = False)

2.捕获警告到日志

import logging

import requests

logging.captureWarnings(True)

r = requests.get('https://www.12306.cn',varify = False)

3.指定本地证书进行验证

本地需要有crt和key(解密状态)

import requests

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

代理设置

普通代理proxies

proxies = {

'http':'http://10.10.1.10:3128'

'https':'http://10.10.1.10.1080'

}

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

需要使用HTTP Basic Auth 的代理

代理格式:http://user:password@host:port

proxies = {

'http':'http://user:password@10.10.1.10:3128'

'https':'http://user:password@10.10.1.10.1080'

}

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

SOCKS协议的代理(需要安装:request[socks])

proxies = {

'http':'socks5://user:password@10.10.1.10:3128'

}

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

超时设置

import requests

# 默认timeout = None:永久等待

r = requests.get('http://www.taobao.com',timeout = 1)

身份认证(账号密码)

import requests

r = requests.get('http://localhost:5000',auth = ('username','password'))

Prepared Request

通过Request对象来设置所有参数(建议使用)

from requests import Request, Session

url = 'http://httpbin.org/post'

data = {

'name':'daguo'

}

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'

} # 添加请求头

s = Session()

req = Request('POST',url, data=data, headers=headers) # 用参数构造Request对象

preppd = s.prepare_request(req) # 将Request对象转换为Prepared Request对象

r = s.send(preppd) # 将Prepared Request对象发送给r

print(r.text)

原文链接:https://blog.csdn.net/weixin_40960364/article/details/106603251

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值