Python入门02:详细来了解一下Requests库

2023-10-31

那个叫做 Urllib 的库让我们的 python 假装是浏览器

接下来我们要来玩一个新的库,这个库的名称叫做 Requests

这个库比 urllib 可是要牛逼一丢丢的,毕竟 Requests 是在 urllib 的基础上搞出来的

通过它我们可以用更少的代码,模拟浏览器操作

人生苦短,接下来就是

学习 python 的正确姿势

图片

对于不是 python 的内置库,我们需要安装一下

直接使用 pip 安装,pip install requests

安装完后就可以使用了,接下来就来感受一下 requests 吧

导入 requests 模块

import requests

一行代码 Get 请求

r = requests.get('https://api.github.com/events')

一行代码 Post 请求

r = requests.post('https://httpbin.org/post', data = {'key':'value'})

其它乱七八糟的 Http 请求

r = requests.put('https://httpbin.org/put', data = {'key':'value'})

r = requests.delete('https://httpbin.org/delete')

r = requests.head('https://httpbin.org/get')

r = requests.options('https://httpbin.org/get')

想要携带请求参数是吧?

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.get('https://httpbin.org/get', params=payload)

假装自己是浏览器

url = 'https://api.github.com/some/endpoint'

headers = {'user-agent': 'my-app/0.0.1'}

r = requests.get(url, headers=headers)

获取服务器响应文本内容

import requests

r = requests.get('https://api.github.com/events')

r.text

u'[{"repository":{"open_issues":0,"url":"https://github.com/...
r.encoding

'utf-8'

获取字节响应内容

r.content

b'[{"repository":{"open_issues":0,"url":"https://github.com/...

获取响应码

r = requests.get('https://httpbin.org/get')

r.status_code

200

获取响应头

r.headers

{    
    'content-encoding': 'gzip',    
    'transfer-encoding': 'chunked',  
    'connection': 'close',    
    'server': 'nginx/1.0.4',    
    'x-runtime': '148ms',    
    'etag': '"e1ca502697e5c9317743dc078f67693f"',   
    'content-type': 'application/json'
    
}

获取 Json 响应内容

import requests

r = requests.get('https://api.github.com/events')

r.json()

[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...

获取 socket 流响应内容

r = requests.get('https://api.github.com/events', stream=True)

r.raw

<urllib3.response.HTTPResponse object at 0x101194810>

r.raw.read(10)

'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'

Post请求

当你想要一个键里面添加多个值的时候

payload_tuples = [('key1', 'value1'), ('key1', 'value2')]

r1 = requests.post('https://httpbin.org/post', data=payload_tuples)

payload_dict = {'key1': ['value1', 'value2']}

r2 = requests.post('https://httpbin.org/post', data=payload_dict)

print(r1.text)

{  ...  "form": {    "key1": [      "value1",      "value2"    ]  },  ...}

r1.text == r2.text

True

请求的时候用 json 作为参数

url = 'https://api.github.com/some/endpoint'

payload = {'some': 'data'}

r = requests.post(url, json=payload)

想上传文件?

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

files = {'file': open('report.xls', 'rb')}

r = requests.post(url, files=files)

r.text

{  ...  "files": {    "file": "<censored...binary...data>"  },  ...}

获取 cookie 信息

url = 'http://example.com/some/cookie/setting/url'

r = requests.get(url)

r.cookies['example_cookie_name']

'example_cookie_value'

发送 cookie 信息

url = 'https://httpbin.org/cookies'

cookies = dict(cookies_are='working')

r = requests.get(url, cookies=cookies)

r.text

'{"cookies": {"cookies_are": "working"}}'

设置超时

requests.get('https://github.com/', timeout=0.001)Traceback (most recent call last):
  File "<stdin>", line 1, in <module>requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python入门02:详细来了解一下Requests库 的相关文章

随机推荐

  • TCP的三次握手以及四次断开简述

    三次握手 第一次握手是指在建立TCP连接时 客户端给服务端发出与端口连接的请求 SYN 1 Seq 并且确认自己的信息是否可以传达到服务端 在服务端收到来自于客户端的连接请求后 开始第二次握手 即服务端向客户端回应客户端请求 SYN ACK
  • Flutter 41: 图解神秘的 SystemChrome

    小菜在切换横竖屏时用到 SystemChrome 小菜理解它作为一个全局属性 很像 Android 的 Application 功能很强大 setPreferredOrientations 在我们日常应用中可能会需要设置横竖屏 或锁定单方向
  • llinux 写/etc/passwd文件添加用户

    llinux 写 etc passwd文件添加用户 openssl passd加密 前言 在做vulnhub靶机 AI web 1 0的时候 getshell用户具有 etc passwd写权限 etc shadow无读写权限 傻子将 et
  • [华为OJ--C++]087-在字符串中找出连续最长的数字串

    题目描述 在字符串中找出连续最长的数字串 如果是输入字符串中连续最长的数字串长度为0 则只输出数字0 如果输入的字串中最长的数字字串只有一组 那么输出这个数字字串再加上数字字串长度 用逗号隔开 如果输入字串中有多个相同长度的数字字串 那么依
  • 【深入理解计算机系统】第二章重点汇总

    2 1 信息的存储 十六进制转二进制 将十六进制的每一位转换成一个4位的二进制 即 0123456789 A B C D E
  • Android开发之获取网页源码

    在有关网络通讯方面的开发应用中有的时候 需要得到网页的源代码 然后对源代码进行一些处理 现在考虑最简单的例子 获取百度首页的源码 界面设计如下 图 1 基本功能就是点击 显示 按钮后将百度首页的源码显示在下方 首先 这里我们用到了访问网络的
  • 3dmax不能撤销

    3dmax是设计常用的软件 它既可以用来做图 也可以用来编程 但是现在出现很多的病毒 影响了3dmax的使用 例如有时候在使用3dmax做图的时候 会出现场景不能撤销的情况 这个时候就需要注意了 这个一般是感染了3dmax的ALC病毒导致的
  • JavaWeb --- JavaScript

    一 JavaScript介绍 JavaScript语言诞生主要是完成页面的数据验证 因此它运行在客户端 需要运行浏览器来解析执行JavaScript代码 JS是Netcape网景公司的产品 最早取名为LiveScript 为了吸引更多jav
  • IDEA如何执行maven命令进行打包编译及常用命令

    前提条件 maven配置环境变量 在保证环境变量配置没问题的情况下执行过程出现mvn不是内部命令类似的错误 建议重启编译器或者命令窗口 执行maven命令 方式一 在IDEA主界面左下角找到 Terminal 点击进入 直接输入想执行的命令
  • 出现 No services need to be restarted. No containers need to be restarted. No user sessions are 解决方法

    目录 前言 1 问题所示 2 解决方法 前言 此提示严重 如果有意关闭 可继续往下看 1 问题所示 当使用apt安装东西的时候 底下会出现如下问题 Scanning linux images Running kernel seems to
  • VScode运行C语言,qsort测试例子

    好久没用 刚好需要测试一下排序 顺便把VSCode的配置也记录一下 准备 1 安装编译环境 我用的mingw64 官网https sourceforge net projects mingw w64 files 记得安装好配置环境变量 或者
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:

    分析 出现这种异常的原因是 MySQL服务器默认的 wait timeout 是8小时 也就是说一个connection空间超过8个小时 mysql将自动断开该connection 这就是问题所在 在连接池中的connection如果空闲超
  • 富士施乐2022网络扫描设置_富士施乐sc2020网络扫描怎么设置?

    1 在计算机客户端添加一个命名为SMB 命名随意 的共享文件夹 这个文件夹是用来存储局域网网络扫描的文件 使用简单的共享方式设置文件夹属性 勾选 在网络上共享这个文件夹 和 允许网络用户更改我的文件 2 在已经安装好多功能办公设备的计算机客
  • undionly.kpxe php,VLOG

    经过研究 终于可以将ESXI的系统通过IPXE网络启动安装到无盘的软路由或者PC上了 当然也可以通过这种方法安装window linux等等其他的系统 一 编译IPXE增加功能与自定义脚本 一 iPXE 概要 按iPXE 官网的介绍是这样的
  • Java提高篇(二七)-----TreeMap

    原文出自 http cmsblogs com p 1013 尊重作者的成果 转载请注明出处 个人站点 http cmsblogs com TreeMap的实现是红黑树算法的实现 所以要了解TreeMap就必须对红黑树有一定的了解 其实这篇博
  • IOS-Xcode Compile flags

    flag 功能 fno objc arc 该文件不启用ARC fo objc arc 该文件启用ARC w 去除警告
  • 【google版efficientdet】官方版efficientdet训练自己的数据集,终于训练成功了

    看全网还没有一篇攻略 本文是第一个 有心人当点赞下 有问题可以下方留言 互相交流 如转载请注明出处 不枉解决各种各样的bug 环境 v100 cuda10 1 tensorflow2 1 0 python3 7 7 只保证这个版本是可行的
  • NUC980开源项目5-安装repo

    上面是我的微信和QQ群 欢迎新朋友的加入 项目码云地址 国内下载速度快 https gitee com jun626 nuc980 open source project 项目github地址 https github com Jun117
  • Pandas 报错 TypeError: ‘Series‘ objects are mutable, thus they cannot be hashed

    一 需求 根据原始 CSV 文件的列 A 的值 添加一列 B 二 尝试 1 1 将 A 列与 B 列对应的值写入字典 dict A 列为 key B 列为 value 2 将 CSV 文件处理为 DataFrame 3 import pan
  • Python入门02:详细来了解一下Requests库

    那个叫做 Urllib 的库让我们的 python 假装是浏览器 接下来我们要来玩一个新的库 这个库的名称叫做 Requests 这个库比 urllib 可是要牛逼一丢丢的 毕竟 Requests 是在 urllib 的基础上搞出来的 通过