精讲Python中的requests方法
发布时间:2025-09-23 10:55:15

安装requeststs安装
如果安装了Anaconda,requests已经可用了。否则,pip需要在命令下安装:
$pipinstallrequests
如果遇到Permision denied安装失败,请添加sudo重试。
使用requeststss使用requeststss使用
通过GET访问一个页面只需要几行代码:
>>>importrequests
>>>r=requests.get('https://www.douban.com/')#豆瓣首页
>>>r.status_code
200
>>>r.text
r.text
'<!DOCTYPEHTML>\n<html>\n<head>\n<metaname="description"content="推荐、评论和提供书籍、电影和音乐唱片...'将带参数的URL输入dict作为params参数:
>>>r=requests.get('https://www.douban.com/search',params={'q':'python','cat':'1001'})
>>>r.url#URL'实际要求;https://www.douban.com/search?q=python&cat=1001'可使用encoding属性查看requests自动检测编码:
>>>r.encoding'utf-8'
无论响应是文本还是二进制内容,我们都可以使用content属性获得bytes对象:
>>>r.content
b'<!DOCTYPEhtml>\n<html>\n<head>\n<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">\n...'
requests的便利性在于对JSON等特定类型的响应,可直接获得:
>>>r=requests.get('
20woeid%20%3D%202153&format=json')
>>>r.json()
{'query':{'count':1,'created':'2017-11-17T07:14:12Z',...HTTP需要传输 作为headers参数,我们在Headers中介绍了一个dict:
>>>r=requests.get('https://www.douban.com/',headers={'User-Agent':'Mozilla/5.0(iPhone;CPUiPhoneOS
11_0like
MacOSX)AppleWebKit'})
>>>r.text
'<!DOCTYPEhtml>\n<html>\n<head>\n<metacharset="UTF-8">\n<title>豆瓣(手机版)</title>...'要发送POST请求,只需将get()方法转换为post(),然后将data参数作为POST请求的数据传输到data参数:
>>>r=requests.post('https://accounts.douban.com/login',data={'form_email':'abc@example.com','form_password':
'123456'})
默认使用application/requestsx-www-form-对POST数据编码urlencoded。若要传输JSON数据,可直接传输JSON参数:
params={'key':'value'}r=requests.post(url,json=params)#内部自动序列化为JSON类似地,上传文件需要更复杂的编码格式,但requests将其简化为files参数:
>>>upload_files={'file':open('report.xls','rb')}
>>>r=requests.post(url,files=upload_files)阅读文件时,注意使用'rb'也就是读取二进制模式,这样获得的bytes长度就是文件的长度。
将post()方法替换为put(),delete()等等,可以通过PUT或DELETE方式要求资源。
除了轻松获取响应内容外,requests还非常简单地获取HTTP响应的其他信息。例如,获取响应头:
>>>r.headers
{Content-Type':'text/html;charset=utf-8','Transfer-Encoding':'chunked','Content-Encoding':'gzip',...}
>>>r.headers['Content-Type']
'text/html;charset=utf-8'requests对Cookie进行了特殊处理,使我们能够轻松获得指定的Cookie,而无需分析Cookie:
>>>r.cookies['ts']'example_cookie_12345'
将Cookie输入请求中,只需准备一个dict输入Cookies参数:
>>>cs={'token':'12345','status':'working'}
>>>r=requests.get(url,cookies=cs)最后,以秒为单位的timeout参数应指定超时并传入:
>>>r=requests.get(url,timeout=2.5秒后超时#2.5秒
下一篇 python闭包详解(实例)
