文章目录

  • 1.Requests 库介绍
  • 2.Requests HTTP 基本请求
  • 3.Requests 请求常用设置
  • 4.Requests 处理返回结果

Python 自带的 urllib 网络请求库基本可满足我们的需要,但是在实际开发过程中使用 起来还是有些烦琐,表现在以下几个方面

  • 发送 GET 和 POST 请求。
  • Cookie 处理。
  • 设置代理。

urllib 默认不支持压缩,要返回压缩格式,必须在请求头里写明 accept- encoding,然后在获取返回数据时,它以响应头里是否有 accept-encoding 来判断是否需要解码。当然也可 以对 urllib 进行一些常用的封装,以规避此类问题。而更多时候,我们会选择使用 Requests 库来模拟请求。

1.Requests 库介绍

Requests 库基于 urllib 库,是采用 Apache2 Licensed 开源协议的 HTTP 库,更加简单且 功能强大。该库支持如下功能。

  • International Domains and URLs:国际化域名和 URL。
  • Keep-Alive & Connection Pooling:Keep-Alive & 连接池。
  • Sessions with Cookie Persistence:带持久 Cookie 的会话。
  • Browser-style SSL Verification:浏览器式的 SSL 认证。
  • Basic/Digest Authentication:基本/摘要式的身份认证。
  • Elegant Key/Value Cookies:简洁的 Key/Value Cookie。
  • Automatic Decompression:自动解压。
  • Automatic Content Decoding:自动内容解码。
  • Unicode Response Bodies:Unicode 响应体。
  • Multipart File Uploads:文件分块上传。
  • HTTP(S) Proxy Support:HTTP(S)代理支持。
  • Connection Timeouts:连接超时。
  • Streaming Downloads:流下载。
  • .netrc Support:支持.netrc。
  • Chunked Requests:Chunked 请求。

其官方仓库为

[官方文档为](http://www.python-requests. org/en/master/)

直接通过 pip 安装库即可

pip install requests
  1. window电脑点击win键+R,输入:cmd

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a5CBbZGu-1670765565287)(9.每天进步一点点—Python-Requests HTTP 请求库.assets/image-20221124184205449.png)]

2.安装requests,pip 命令安装 ,我们使用豆瓣的镜像源来安装

pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEdc34Qh-1670765565289)(Python爬虫image/image-20221211211133611.png)]

2.Requests HTTP 基本请求

Requests 支持各种请求方式:GET、POST、PUT、DELETE、HEAD、OPTION。使用 代码示例如下

r1 = requests.get("http://xxx", params={"x": 1, "y": 2})
r2 = requests.post("http://xxx", data={"x": 1, "y": 2})
r3 = requests.put("http://xxx")
r4 = requests.delete("http://xxx")
r5 = requests.head("http://xxx")
r6 = requests.options("http://xxx")

注意事项:

  • URL 链接里有中文时会自动转码
  • 使用 post 时,如果传递的是一个 str 而不是一个 dict,则会直接发送出去(如 JSON 字符串)
  • 使用 post 时,如果传递的是一个 str 而不是一个 dict,则会直接发送出去(如 JSON 字符串).
  • post 可以通过 file 参数上传文件,如 post(url, files={‘file’: open(‘report.xls’, ‘rb’)})

3.Requests 请求常用设置

Requests 请求的相关设置如下:

设置请求头:headers={'xxx':'yyy'}
代理:proxies={'https':'xxx'}
超时(单位秒):timeout=15

4.Requests 处理返回结果

Requests 请求会返回一个 requests.models.Response 对象,可以通过调用表中的字段获取响应信息。

字段 描述
status_code 获取状态码
reason 状态信息
url 获取请求的 URL
content 获取 byte 类型的返回结果,相当于 urllib.urlopen().read
raw 获得原始的返回结果,请求里需要设置 stream=True
text 获取 str 类型的返回结果,会自动根据响应头部的字符编码进行解码;
可以调用 r.encoding 获得编码方式,或者在调用 text 之前先用
r.encoding='编码’来设置编码类型,text 就会按照对应的编码进行解析
json 解析序列化为 JSON 格式的数据,可以直接通过[‘xxx’]获取数据。
如果解析错误,则会抛出异常:ValueError: No JSON object could be decoded

除此之外,还可以使用 headers 获得响应头,代码示例如

r = requests.get('http://gank.io/api/data/Android/50/1')
# 直接根据键获得值
print(r.headers.get('Date'))
# 遍历获得请求头里所有键值
for key, value in r.headers.items():print(key + " : " + value)

如 果 想 获 取 请 求 头 信 息 , 可 以 调 用r.request.headers。 除 此 之 外 , 还 可 调 用 raise_for_status(),当响应码不是 200 时,会抛出 HTTPError 异常,可用于响应码校验。另 外,由 Requests 发起的请求,当相应内容经过 gzipdeflate 压缩时,Requests 会自动解包, 可以通过 content 获得 byte 方式的响应结果。
请接着看下一博客笔记

9.每天进步一点点---Python-Requests HTTP 请求库相关推荐

  1. python爬虫 - python requests网络请求简洁之道

    转自:python爬虫 - python requests网络请求简洁之道 requests简介 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到 ...

  2. Python 深入浅出 - 网络请求库 Requests

    Requests 是用 Python 语言编写的,基于 urllib,采用 Apache2 Licensed 开元协议的 HTTP 库,它比 urllib 更加方便,编写爬虫和测试服务器响应数据时经常 ...

  3. Python爬虫下一代网络请求库httpx和parsel解析库测评

    Python网络爬虫领域两个最新的比较火的工具莫过于httpx和parsel了.httpx号称下一代的新一代的网络请求库,不仅支持requests库的所有操作,还能发送异步请求,为编写异步爬虫提供了便 ...

  4. Python 爬虫下一代网络请求库 httpx 和 parsel 解析库测评

    这是「进击的Coder」的第 437 篇技术分享 作者:大江狗 来源:Python Web与Django开发 " 阅读本文大概需要 8 分钟. " Python 网络爬虫领域两个最 ...

  5. python的网络请求库urllib、urllib2、urllib3、request的联系

    文章目录 1. 简介 2. urllib 3. urllib2 4. urllib3 5. requests 6. 相关文章 1. 简介 urllib.urllib2.urllib3.request均 ...

  6. python urllib.request 爬虫 数据处理-python爬虫1--urllib请求库之request模块

    urllib为python内置的HTTP请求库,包含四个模块: request:最基本的HTTP请求模块, 只需要传入URL和参数 error:异常处理模块 parse:工具模块,处理URL,拆分.解 ...

  7. python requests post请求_Pythonrequest发送post请求

    例子: curl -d 'data={"instanceid":"xxx", "backupmethod": "hadoop&qu ...

  8. python requests cookies请求_python+requests实现接口测试 - cookies的使用

    在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别信息, 会造成识别失败. 如一些需要用户登录以后才能访问的页面. import requests mya ...

  9. python requests post请求_Python“requests”模块中的POST请求无法正常工作

    POST https://maxcvservices.dnb.com/rest/Authentication x-dnb-user: MyUsername x-dnb-pwd: MyPassword ...

  10. 使用Python requests和BeautifulSoup库爬取去哪儿网

    功能说明:爬取去哪儿网城市下面若干条景点详细信息并将数据导入Excel表(使用xlwt库) 爬取去哪儿网的教程参考自 https://blog.csdn.net/gscsd_t/article/det ...

最新文章

  1. leetcode 515. 在每个树行中找最大值(层序遍历06)
  2. 3.12 12!配对
  3. linux两台服务器传输,Linux两台服务器之间高速数据传输命令:scp应用详解
  4. 【OPTEE开发】从TA到安全驱动的功能设计
  5. 虚拟机Ubuntu蓝屏闪屏解决方法
  6. UI设计素材资源|艺术感加分背景
  7. 停车还能360全方位影像_2020款新途锐锐享版上市,智能泊车360全景影像加量不加价...
  8. Serializing - 序列化 综述 – To be continued.
  9. 云服务器快速配置阿里巴巴NTP(网络时间协议)
  10. 《Using OpenRefine》翻译~1
  11. OneNote | OneNote 备份(线上+本地)
  12. CorelDRAW 2019中文版安装使用教程
  13. TIBCO Rendezvous 概念
  14. 笔记本无线网卡驱动异常如何解决?
  15. 青春如电,许多未了心愿
  16. 彩色rgb图像拆分为rgb三个通道,并重新合并为彩色图像
  17. jsp页面九大隐含对象
  18. 理解MySQL复制(Replication)
  19. Could not contact [localhost:8005] (base port [8005] and offset [0]). Tomcat may not be running.
  20. 关于多项目的资源管理方法[范文学习]

热门文章

  1. python b站 排行_【圆老司】用python爬虫追踪知乎/B站大V排行
  2. 由失恋而想到的......---飘题万里
  3. OGG Replicat 指定应用点 rba
  4. 用C语言操作MySQL数据库-通用版
  5. 软件著作权申请:【02】实操申请步骤
  6. vue2百度地图选点组件
  7. 魔兽争霸3地图(WarIII Maps):神魔之井
  8. threadlocal使用场景_这玩意比ThreadLocal叼多了,吓得我赶紧分享出来
  9. [2022.1.13]UPC-2021级新生个人训练赛第22场-9782 Problem G 填字游戏
  10. eclipse插件开发示例