美文网首页
requests的快速入门

requests的快速入门

作者: MoonMonsterss | 来源:发表于2018-10-21 19:02 被阅读13次

1.安装

pip install requests

2.导入

import requests

3.常用函数

requests.post('http://httpbin.org/post', data = {'key':'value'})
requests.put('http://httpbin.org/put', data = {'key':'value'})
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')

4.给url添加参数

会以键值对的方式跟在 ? 后面,例如httpbin.org/get?key=val
Requests可以使用params关键字参数来传递url参数,以一个字符串字典来提供参数

params = {'key':'value'}
r = requests.get('http://httpbin.org/get',params=params)
# url: http://httpbin.org/get?key=value

或者一个key值对应多个value值

payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('http://httpbin.org/get', params=payload)
# url: http://httpbin.org/get?key1=value1&key2=value2&key2=value3

5.响应内容

r.text可以获取到返回的内容
r.encoding获取返回的编码类型,也可以自己手动更改编码,那么在之后的请求中,都将使用encoding的新的值

二进制响应内容
r.content 对于非文本的请求,可以字节的形式请求响应体,Requests会自动解码gzip和deflate传输编码的响应数据

保存一张图片,图片在传输过程中是以字节的形式存在,在保存时使用r.content写入到文件中

r = requests.get('http://img.zcool.cn/community/0117e2571b8b246ac72538120dd8a4.jpg@1280w_1l_2o_100sh.jpg')
with open('fp.jpg','wb') as img:
    img.write(r.content)

json响应内容
r.json() 内置的JSON解码器,处理json数据
json数据解析失败时会抛出异常;json数据解析成功也并不代表响应成功,有可能返回的错误数据就是json格式的
判断是否响应成功,使用r.raise_for_status()或者r.status_code判断

原始响应内容
r.raw 获取来自服务器的原始套接字响应,同时需要设置stream=True

r = requests.get('http://httpbin.org',stream=True)
print(r.raw.read()) # read会读取所有的数据,可以传入int参数
print(r.text)

定制请求头
传递一个dict数据给headers参数
所有的headers必须是string,tytestring或者unicode类型

headers = {'user-agent':'test-app'}
r = requests.get('http://httpbin.org/get',headers=headers)

6.复杂的POST请求

发送一些编码为表单的数据,只需要传递dict给data参数,在请求时会自动编码为表单形式

payload = {'key1': 'value1', 'key2': 'value2'}
payload = (('key1', 'value1'), ('key1', 'value2'))
r = requests.post('http://httpbin.org/post', data=payload)
数据:"form": {
        "key": "value"
    }

如果想发送出去的数据就是string类型,而不是form表单数据的话,可以这么做

params = {'key':'value'}
r = requests.post('http://httpbin.org/post',data=json.dumps(params))
数据: "json": {
        "key": "value"
    } 

也可以直接使用json参数传递,不需要dumps了

requests.post(url, json=payload)

7.POST发送文件

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

可以显式地设置文件名,文件类型和请求头

    files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}

也可以将字符串当做文件来发送

files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}

8.Cookie

从cookie中获取值

r.cookies['example_cookie_name']

发送cookie到服务器

cookies = dict(cookies_are='working')
r = requests.get('http://httpbin.org/cookies',cookies=cookies)

Cookie的返回对象是RequestsCookieJar,行为和dict类似,适合跨域名跨路径使用

jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
r = requests.get(url, cookies=jar)

9.超时

在请求可以传入timeout参数,设置指定时间后,如果没有请求成功,则停止响应
timeout只对连接有效,与响应体的下载无关
timeout并不是整个下载响应的时间限制,而是服务器在timeout秒内没有应答
requests.get('http://github.com', timeout=0.001)

10.错误与异常

网络问题(DNS查询失败,拒绝连接等),抛出ConnectionError异常
返回不成功的状态码,Response.raise_for_status()抛出一个HTTPError异常
请求超时,抛出Timeout异常
请求超过设定的最大重定向次数,抛出一个TooManyRedirects异常

相关文章

  • 爬虫入门系列(六):正则表达式完全指南(下)

    爬虫入门系列目录: 爬虫入门系列(一):快速理解HTTP协议 爬虫入门系列(二):优雅的HTTP库requests...

  • Requests 快速入门

    Requests是python的一个HTTP客户端库,跟python内置的urllib,urllib2类似,那为什...

  • requests快速入门

    requests是个非常好用的http库,但是我之前对它一知半解,这次初步得做了整理,加深了对它的理解,相信对其他...

  • requests的快速入门

    1.安装 pip install requests 2.导入 import requests 3.常用函数 4.给...

  • python之requests模块

    Requests快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引。其假设你已经安装了...

  • 入门级爬虫

    Requests库入门我的个人博客 requests Requests库的7个主要方法 Requests库的get...

  • requests-html快速入门

    Python上有一个非常著名的HTTP库——requests,相比大家都听说过,用过的人都说好!现在request...

  • Python Requests模块快速入门

    Requests是Python的一个HTTP客户端库,跟urllib,urllib2类似。它比 urllib 更加...

  • Requests01-快速入门

    一、简介 Requests是Python非常好用的第三方Http操作库,它支持Http协议的一些请求,如get/p...

  • Python之网络请求库Requests

    Requests库入门 Requests库的7个主要方法 Response对象属性 Requests响应异常 HT...

网友评论

      本文标题:requests的快速入门

      本文链接:https://www.haomeiwen.com/subject/rttizftx.html