python 学习之 request 库的基本使用

这篇具有很好参考价值的文章主要介绍了python 学习之 request 库的基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、基本请求

2、代理设置

3、设置请求参数

4、设置请求头

5、文件的写入与读取

6、遍历请求 txt 内的所有 url

7、其他补充


1、基本请求

测试代码:

import requests

re = requests.get("http://www.baidu.com")
print(re.status_code)
print(re.text)

个人理解:

使用 requests 库我们肯定需要先导入它,使用 import 导入;

re 为我们自定义的一个参数,用来接收请求返回的信息,在 python 中点表示调用的意思,我们这里就调用了 requests 库中的 get() 方法,括号内为请求的URL,使用单引号或者双引号包裹;

最后使用 print 函数输出响应结果,也是通过点进行调用;

status_code 为响应状态码,text 返回的是网页源码(str类型)。

运行结果:

python request,Python,python,学习,开发语言,pycharm,web,http

常用的调用方法:

re. text    # 返回的是unicode 型的数据,一般是在网页的header中定义的编码形式

re.content    # 返回的是bytes,二级制型的数据

如果想要提取文本就用 text ,如果想要提取图片、文件,就用 content

re.url   # 获取请求的 url

re.status_code   # 获取响应的状态码

re.headers   # 获取响应头

re.request.headers   # 获取请求头

re.cookies   # 获取 cookie

re.history   # 获取请求历史

2、代理设置

测试代码:

import requests

proxies = {
    'http': "http://127.0.0.1:8080",
    'https': "http://127.0.0.1:8080"
}

re = requests.get("http://www.baidu.com", proxies=proxies)
print(re.url)
print(re.status_code)
print(re.text)

个人理解:

就是加入一个 proxies ,字典的数据类型,内容为键值对的形式,分别为 http 和https 协议设置代理,我这里是转发到本地的 8080 端口,再使用 burpsuite 进行抓包拦截。

注意在请求中加上 proxies=proxies 即可。

运行结果:

burpsuite 成功抓包

python request,Python,python,学习,开发语言,pycharm,web,http

放包之后观察 pycharm 结果回显

代理转发请求成功

python request,Python,python,学习,开发语言,pycharm,web,http

3、设置请求参数

最常用的有两种情况:get 和 post 请求

测试代码(以 get 请求为例):

import requests

proxies = {
    'http': "http://127.0.0.1:8080",
    'https': "http://127.0.0.1:8080"
}

payload = {
    'myon': "hello!",
    'test': 123456
}

re = requests.get("http://www.baidu.com", proxies=proxies, params=payload)
print(re.url)
print(re.status_code)
print(re.text)

个人理解:

同代理设置一样,新增一个请求的 payload ,也是字典键值对的形式;

注意不同键值对之间使用逗号隔开,否则会报错;

请求中加上 params=payload 即可。

特别说明:

对于 get 请求,我们使用 params;

对于 post 请求,我们使用 data,即:

payload = {
    'myon': "hello!",
    'test': 123456
}

re = requests.post("http://www.baidu.com", proxies=proxies, data=payload)

抓包结果:

get 请求

python request,Python,python,学习,开发语言,pycharm,web,http

post 请求

python request,Python,python,学习,开发语言,pycharm,web,http

4、设置请求头

测试代码(以 post 请求为例):

import requests

proxies = {
    'http': "http://127.0.0.1:8080",
    'https': "http://127.0.0.1:8080"
}

payload = {
    'myon': "hello!",
    'test': 123456
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'test': 'hello Myon!'
}

re = requests.post("http://www.baidu.com", proxies=proxies, data=payload, headers=headers)
print(re.url)
print(re.status_code)
print(re.text)

个人理解:

新增请求的 headers ,也是字典键值对的形式,这里设置了三个请求头;

同理需要在请求中加上 headers=headers 。

使用 burpsuite 抓包看看:

python request,Python,python,学习,开发语言,pycharm,web,http

这里如果直接运行会报错:

python request,Python,python,学习,开发语言,pycharm,web,http

这个错误是由于 SSL 证书验证失败引起的

我们需要在请求中增加 verify=False 

即:文章来源地址https://www.toymoban.com/news/detail-860249.html

re = requests.post("http://www.baidu.com", proxies=proxies, data=payload, headers=headers, verify=False)

运行结果:

因为这里 payload 我们是随便添加的所以找不到

python request,Python,python,学习,开发语言,pycharm,web,http

python request,Python,python,学习,开发语言,pycharm,web,http

5、文件的写入与读取

写入文件:

比如我们想将百度的图标下载下来

我们前面说过,这种图片类是二进制文件,因此使用 content

python request,Python,python,学习,开发语言,pycharm,web,http

测试代码:

import requests

re = requests.get("https://www.baidu.com/favicon.ico")

with open('save.ico', 'wb') as f:
    f.write(re.content)

个人理解:

'wb' 表示二进制写入,save.ico 为保存的文件名,如果当前目录下没这个文件名则会新建;

将这个文件作为 f (可自定义名字),调用 write() 方法写入请求返回的数据。

运行结果:

python request,Python,python,学习,开发语言,pycharm,web,http

在同一目录下找到 save.ico 即我们下载的文件

python request,Python,python,学习,开发语言,pycharm,web,http

如果我们想写入的是文本,则使用 text 和文本写入模式('w')

即:

with open('save.txt', 'w') as f:
    f.write(re.text)

补充说明:

如果返回的内容不是 str 类型,可以使用 str() 方法进行类型转换,比如

    f.write(str(re.status_code))

读取文件:

测试代码:

import requests

with open('ip.txt', 'r') as file:
    for i in file:
        print(i.strip())

个人理解:

其中 ip.txt 是一个本地存在的文件,'r' 表示以只读方式打开,并赋给 file(可自定义名字);

使用 for 循环,遍历 file ; 

使用 print() 函数输出结果,strip() 用于去除行尾的换行符和空白字符。

运行结果:

这里其实还不用引入 requests 库,但是后面就会需要了

python request,Python,python,学习,开发语言,pycharm,web,http

6、遍历请求 txt 内的所有 url

测试代码:

import requests

with open('url.txt', 'r') as urls:
    for i in urls:
        url = i.strip()
        try:
            re = requests.get(url)
            print(f"请求URL为:{url}, 响应状态码为:{re.status_code}")
        except Exception as e:
            print(f"请求出错:{url},{e}")

在本地准备一个 url.txt 

前三个为可正常访问的网站,最后一个为错误的地址

python request,Python,python,学习,开发语言,pycharm,web,http

说明:

f 是 f-string 的语法,是一种用于字符串格式化的快捷方式;

在 f-string 中,可以直接嵌入变量和表达式,而不需要使用传统的字符串格式化方法;

{} 内放的是表达式,可以是变量、常量、表达式等;

这部分被称为花括号或占位符,用于在字符串中表示将在运行时被替换的值。

基本的 try 和 except 结构:

try:
    # 你的代码块
    # 可能会引发异常的代码
except SomeExceptionType as e:
    # 处理异常的代码
    # e 是异常对象,包含有关异常的信息

这里使用 requests.RequestException 更好,即:

        except requests.RequestException as e:

运行结果:

python request,Python,python,学习,开发语言,pycharm,web,http

7、其他补充

在请求中我们还可以设置超时时间,使用 timeout 指定

即:

向百度发出请求,如果 3 秒内没有得到响应,则抛出错误

re = requests.post("http://www.baidu.com", timeout=3)

请求分为两个阶段:连接(connect)和读取(read)
# 如果给 timeout 参数指定一个数值,则超时时间是这两个阶段的总和
# 可以传入一个元组,分别指定连接超时时间和读取超时时间

即:

re = requests.post("http://www.baidu.com", timeout=(2,10))

到了这里,关于python 学习之 request 库的基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python中selenium库的基本使用详解

    什么是selenium selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE)

    2024年01月21日
    浏览(37)
  • python学习-->opencv图像基本操作学习之灰度图转换

    好久没更新,趁今天要做核酸回不了宿舍,把今天的学习的opencv知识先记录一下! 运行环境是:pycharm 话不多说,献上代码再说: 首先我们先读取我们的图片进来! 跟着我们先尝试一下在打开我们的图片看看! 下面是实现的代码! 运行之后我的图片是这样的 我们可以看看图

    2024年02月08日
    浏览(57)
  • Python Requests库的POST方法

    Python Requests库的POST方法 随着互联网技术的发展,网络爬虫在各行各业的应用中扮演着重要的角色。而Python中的Requests库,作为一款强大的HTTP请求库,在网络爬虫中有着广泛的应用。其中,POST方法具有提交数据的功能,能够模拟浏览器发送数据到指定的URL地址。 使用Python的

    2024年02月16日
    浏览(69)
  • 关于Python网络爬虫requests库的介绍

    这篇文章主要介绍了关于Python网络爬虫requests库,而很多时候这些数据存储在网页中,手动下载需要花费的时间太长,这时候我们就需要网络爬虫帮助我们自动爬取这些数据,需要的朋友可以参考下 简单来说,就是构建一个程序,以自动化的方式从网络上下载、解析和组织数据

    2024年02月01日
    浏览(38)
  • Python中py2neo库的基本使用方法

    因为需要将处理好的csv文件用neo4j存储,因此想到使用python将数据导入neo4j,就需要用到py2neo库。 安装py2neo库: 首先是建立连接: 注意:这里传入用户名和密码使用的auth元组形式 Node和Relationship可以定义对应的实例,Node第一个参数是label, 再利用graph.create()创建。打开neo4j可以

    2024年02月16日
    浏览(58)
  • Pygame:Python游戏开发库的安装和使用指南

    Pygame:Python游戏开发库的安装和使用指南 如果你想使用Python编写游戏,那么Pygame游戏开发库可能是你最好的选择。这个库提供了丰富的功能和工具,可让你轻松地创建各种类型的游戏。在本文中,我们将介绍如何安装Pygame,并使用它来创建一个简单的游戏。 安装Pygame 要使用

    2024年02月06日
    浏览(72)
  • Python爬虫之Requests库、BS4解析库的下载和安装

    一、Requests库下载地址 requests · PyPI 将下载的.whl文件放在Script目录下  win+r 输入cmd 进入windows控制台 进入到Scripts目录 输入pip3.10 install requests-2.28.1-py3-none-any.whl(文件的名称) 出现Successful install即安装成功  二、BS4解析库的下载和安装 进入到scripts目录 pip install bs4 由于 BS4

    2024年02月05日
    浏览(42)
  • 基于python requests库的bilibili爬虫简单尝试以及数据分析及可视化

    在初步了解了关于爬虫的课程之后,我也进行了一些自己的尝试。本文将从“爬取BiliBili Vtuber区直播信息为切入点,来探讨requests, re等库的基础应用。在爬取信息之后,本文将通过matplotlib以及pandas库做数据分析以及可视化 首先,我们先确认任务:打开Bilibili,在直播分区中选

    2024年02月05日
    浏览(39)
  • Python中的selenium库的基本用法

    Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。 通过此行代码可以快速在Python中安装selenium库 pip install Selenium 另外,我们仍需要安装浏览器驱动 Selenium3.x调用浏览器必须有一个webdr

    2023年04月20日
    浏览(38)
  • python学习——pandas库的使用之series及DataFrame创建、查看、切片、运算

    Pandas是基于NumPy的数据分析模块 Pandas纳入了大量库和一些标准的数据模型,提供了高效操作大型数据集所需的工具 Pandas提供了大量能使我们快速便捷处理数据的函数和方法 Pandas的数据结构 Series :带标签的一维数组,与Numpy中的一维array类似。与列表也很相近。 区别是:列表

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包