【python教程】requests库的基本用法

您所在的位置:网站首页 保安棍的基本用法 【python教程】requests库的基本用法

【python教程】requests库的基本用法

2024-07-15 22:29:39| 来源: 网络整理| 查看: 265

文章目录 😀前言📕往期知识点 😀request库的安装(1) 直接安装的方法(2) pycharm安装的方法 😀request基本用法(1) 请求方法(1) 发送请求(2) 传递url参数(3) 响应(4) 定制请求头(6) 上传文件(7) 超时 😀 高级用法(1) 会话对象(2) SSL 证书验证(4) 代理 🍁结语

😀前言

requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib简洁很多。

📕往期知识点

📕往期内容回顾

💡 【python】 字典使用教程(超级详细)不看 你怎么够别人卷 💡【python教程】保姆版教使用pymysql模块连接MySQL实现增删改查 💡 selenium自动化测试实战案例哔哩哔哩信息至Excel 💡舍友打一把游戏的时间,我实现了一个selenium自动化测试并把数据保存到MySQL

今天介绍一个库Requests 这是request的中文官网 在这里插入图片描述

😀request库的安装 (1) 直接安装的方法

安装语法:

pip install requests

要安装 Requests,只要在你的终端中运行这个简单命令即可,因为我这里已经安装过了会显示已经存在了,首次安装的会话出现successful则证明安装成功。 在这里插入图片描述

(2) pycharm安装的方法

如果使用的是pycharm,安装方法见下图(顺序为按照箭头的方向操作),我这安装过了。 在这里插入图片描述 如果安装完成,导入模块验证一下是否成功即可,这样是没问题的。 在这里插入图片描述

😀request基本用法 (1) 请求方法

常见的请求方法如下:

GET:请求页面,数据包含在URL里面POST:大多用于提交表单或者上传文件,数据包含在请求体中HEAD:类似GET请求,不过响应报文没有具体的内容,用于获取报头PUT:用客户端传送的数据取代指定的内容DELETE:请求服务器删除指定的页面CONNECT:把服务器当作跳板,让服务器代替客户端访问其他网页OPTIONS:允许客户端查看服务器的性能TRACE:回显服务器收到的请求,主要用于测试或者诊断

不过我们见到和使用的大多数都是GET和POST请求

(1) 发送请求

使用 Requests 发送网络请求非常简单。如果我们要发起一个GET请求,直接调用requests库里的GET方法即可,如下

我们在pyCharm中从导入 Requests 模块开始:

>>> import requests

获取某个网页:

import requests r = requests.get('https://www.baidu.com') print("类型",type(r)) # 对象的类型 print("状态码",r.status_code) # 打印对象的响应状态码 print("编码格式",r.encoding) # 打印编码 print("cookie信息",r.cookies) # 打印cookie信息

运行结果,r为Response对象。我们可以从这个对象中获取所有我们想要的信息 在这里插入图片描述

POST请求

要实现发送表单形式的数据,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自动编码为表单形式:

import requests playload = {'key1': 'value1', 'key2': 'value2'} r = requests.post('http://httpbin.org/post', data=playload) print(r.text)

运行结果 在这里插入图片描述

各种请求方式Requests 简便的 API 意味着所有 HTTP 请求类型都是简便。例如:

import requests requests.get('http://httpbin.org/get') requests.post('http://httpbin.org/post') requests.put('http://httpbin.org/put') requests.delete('http://httpbin.org/delete') requests.head('http://httpbin.org/get') requests.options('http://httpbin.org/get') (2) 传递url参数

你也许经常想为 URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键/值对的形式置于URL 中,跟在一个问号的后面。例如, httpbin.org/get?key=val。 Requests 允许你使用 params关键字参数,以一个字符串字典来提供这些参数。

例如:如果你想传递 key1=value1 和 key2=value2 到 httpbin.org/get ,那么你可以使用如下代码:

payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get("http://httpbin.org/get", params=payload) print(r.text) # 获取文本 print(r.url) # URL

通过打印输出该 URL和r的文本信息,你能看到 URL 已被正确编码,还有我们传递的数据在了text里面: 在这里插入图片描述 注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。 你还可以将一个列表作为值传入:

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

结果 在这里插入图片描述

(3) 响应

当我们发起请求之后,如果一切正常,就会得到相应的响应。我们的最终目的,就是要获取返回的数据,所以对返回的数据进行处理是非常重要的。

读取服务器响应的内容

import requests r = requests.get('https://github.com/timeline.json') print(r.text)

服务器返回的内容 在这里插入图片描述 Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。 读取json响应的内容:

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

运行结果 在这里插入图片描述 读取原始的响应内容: 你想获取来自服务器的原始响应,你可以访问 r.raw。 初始请求中设置了 stream=True。

import requests r = requests.get('https://github.com/timeline.json', stream=True) print(r.raw)

运行结果 在这里插入图片描述

(4) 定制请求头

请求头,一般是传送服务器需要的一些附加信息,其中比较重要的就是User-Agent,Referer,Cookie等,常用的请求有说明如下:

Accept: 请求报头域,用于指定客户端可接受哪些类型的信息Accept-Language: 指定客户端可接受的语言类型Accept-Encoding: 指定客户端可接受的编码Host:用于指定资源主机的IP和端口号,其内容为请求URL的原始服务器或网关的位置Cookie:网站为了辨别用户进行会话跟踪而存储在用户本地的数据,它的主要功能是维持当前访问会话。Referer: 用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做资源统计防盗链接处理等。User-Agent: 可以是服务器识别客户端使用的操作系统及版本,浏览器及版本信息等。所以在做爬虫时要加上此信息,可以伪装浏览器;不加的话很容易被识别为爬虫。Conten-Type:互联网媒体类型,用来表示具体请求中媒体类型信息;如text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型

在对页面发起请求的时候不加请求头的话容易被禁止访问,例如访问知乎https://www.zhihu.com/ 如下

import requests res1 = requests.get('https://www.zhihu.com/') print(res1.text) for i in res1.request.headers.items(): print(i)

结果 在这里插入图片描述 上面看见了,如果我们不构造请求头headers的话,容易被禁止访问,因为浏览器有反爬措施。 结果返回403(禁止访问),因为浏览器会通过User-Agent参数了解到我们的电脑系统以及浏览器等信息,上面不带headers时,默认User-Agent为python-requests/2.22.0,这服务器一看就知道是脚本,那肯定就会禁止访问。这时就需要重新构造请求头,伪装成浏览器访问,如下 在这里插入图片描述 将上面的user-agent值用代码传送,如下

# 伪造头 headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'} res1 = requests.get('https://www.zhihu.com/',headers=headers) print(res1.status_code) for i in res1.request.headers.items(): print(i)

运行结果 在这里插入图片描述 如上,重新构造请求头传了user-agent参数后,请求就成功了,user-agent也是我们传进去的值。

(6) 上传文件

Requests 使得上传文件变得很简单:

# 上传文件 url = 'http://httpbin.org/post' files = {'file': open('report.xls', 'rb')} r = requests.post(url, files=files) print(r.text)

结果 在这里插入图片描述

(7) 超时

你可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。基本上所有的生产代码都应该使用这一参数。如果不使用,你的程序可能会永远失去响应:

import requests respone = requests.get('http://github.com', timeout=0.001) print(respone)

注意: timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)

😀 高级用法 (1) 会话对象

会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie,因为如果没有使用会话对象,每一次请求都相当于新的请求,类似于不同浏览器单独打开请求,如下面的请求:

import requests q = requests.get('http://httpbin.org/cookies/set/sessioncookie/123456') print(q) r = requests.get('http://httpbin.org/cookies') print(r.text)

运行结果 在这里插入图片描述 使用会话对象后,创建对象实例s = requests.Session(),通过s去请求,结果如下:

import requests s = requests.Session() e = s.get('http://httpbin.org/cookies/set/sessioncookie/123456') print(e.text) r = s.get('http://httpbin.org/cookies') print(r.text)

运行结果 在这里插入图片描述

(2) SSL 证书验证

Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。SSL 验证默认是开启的,如果证书验证失败,Requests 会抛出 SSLError:

requests.exceptions.SSLError: HTTPSConnectionPool(host=‘www.12306.cn’, port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(“bad handshake: Error([(‘SSL routines’, ‘tls_process_server_certificate’, ‘certificate verify failed’)],)”,),))

证书验证设置

import requests from requests.packages import urllib3 urllib3.disable_warnings() #从urllib3中消除警告 response = requests.get('https://www.12306.cn',verify=False) #证书验证设为FALSE print(response.status_code) (4) 代理

什么是代理? 代理IP是一个ip ,指的是一个代理服务器。

要晓得正向代理和反向代理是啥? 知不知道服务器的地址做为判断标准:知道就是正向代理,不知道就是反向代理。 在这里插入图片描述 代理ip的分类(常见有两大分类依据:匿名度&&协议)

①匿名度:

透明代理 :目标服务器可以通过代理找到你的ip;

匿名代理 :两者之间;

高匿代理 :在爬虫中经常使用,目标服务器无法获取你的ip。

②协议:(根据网站使用的协议不同,需要使用响应的协议代理服务)

http代理:目标的url为http协议;

https代理:目标url为https协议;

socks代理 :只是简单的传递数据包,不关心是何种协议,比http和HTTPS代理消耗小, 可以转发http和https的请求。

为何使用代理? (1)让服务器以为不是同一个客户端在请求; (2)防止我们的真实地址被泄露,防止被追究。

用法:   当我们需要使用代理时,同样构造代理字典,传递给proxies参数。   在这里插入图片描述

🍁结语

到此这篇关于Python之requests库基本介绍到这了,其实学习这件事很容易,不局限于编程,学习是一件持久的事情,从始至终,有句话说得好,知之者不如好之者,好之者不如乐之者。 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭