请求模块requests(二)

简介: 请求模块requests(二)

爬取二进制数据
使用requests模块中的get()函数不仅可以获取网页中的源码信息,还可以获取二进制文件。但是在获取二进制文件时,需要使用Response.content属性获取bytes类型的数据,然后将数据保存在本地文件中。例如,下载百度首页中的Logo图片即可使用如下代码:

import requests           # 导入网络请求模块requests
# 发送网络请求
response = requests.get('https://www.baidu.com/img/bd_logo1.png?where=super')
# 打印二进制数据
print(response.content)

# 通过open()函数将二进制数据写入本地文件
with open('百度logo.png', 'wb') as f:
  f.write(response.content)

程序运行前打印的二进制数据和程序运行后,当前目录下将自动生成的图片,如下:
image.png

GET(带参)请求
1、实现请求地址带参
如果需要为GE T请求指定参数时,可以直接将参数添加在请求地址URL的后面,然后用问号(?)进行分隔,如果一个URL地址中有多个参数,参数之间用“&”进行连接。GET(参数)请求代码如下:

# 导入网络请求模块requests
import requests

# 发送网络请求
resp = requests.get('http://httpbin.org/get?name=Jack&age=30')

# 打印响应结果
print(resp.text)

运行结果如下:

{
   
  "args": {
   
    "age": "30", 
    "name": "Jack"
  }, 
  "headers": {
   
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.27.1", 
    "X-Amzn-Trace-Id": "Root=1-61f386b5-59f46c3e70d941250f0d181f"
  }, 
  "origin": "222.163.139.128", 
  "url": "http://httpbin.org/get?name=Jack&age=30"
}

备 注:网站http://httpbin.org/get可以作为练习网络请求的一个站点使用,可以模拟各种请求操作。

2、配置params参数
requests模块提供了传递参数的方法,允许使用params关键字参数以一个字符串字典来提供这些参数。例如,想传递ke1=value1 和key2=value2到httpbin.org/get,可以使用如下代码:

# 导入网络请求模块requests
import requests

# 定义请求参数
data = {
   'name':'Michael', 'age':'36'}

# 发送网络请求
resp = requests.get('http://httpbin.org/get', params=data)
print(resp.text)

运行结果如下:

{
   
  # 参数
  "args": {
   
    "age": "36", 
    "name": "Michael"
  }, 
  "headers": {
   
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.27.1", 
    "X-Amzn-Trace-Id": "Root=1-61f38985-67ce8a783401e4a80cbd03c9"
  }, 
  "origin": "222.163.139.128", 
  "url": "http://httpbin.org/get?name=Michael&age=36"
}

POST请求
1、设置请求参数data实现POST请求
POST请求方式也叫提交表单,表单中的数据内容就是对应的请求参数。使用requests模块实现POST请求时需要设置请求参数data。POST请求的代码如下:

#_*_coding:utf-8_*_
# 作者      :liuxiaowei
# 创建时间   :1/28/22 2:26 PM
# 文件      :设置请求参数data实现POST请求.py
# IDE      :PyCharm

# 导入网络请求模块
import requests

# 导入json模块
import json

# 字典类型到表单参数
data = {
   '1':'能力有限的,而努力是无限的。',
        '2':'星光不问赶路人,时光不负有心人。'}

# 发送网络请求
resp = requests.post('http://httpbin.org/post', data = data)

# 将响应的数据转成字典类型
resp_dict = json.loads(resp.text)

# 打印转换后的响应数据
print(resp_dict)

运行结果如下:

{
   'args': {
   }, 'data': '', 'files': {
   }, 'form': {
   '1': '能力有限的,而努力是无限的。', '2': '星光不问赶路人,时光不负有心人。'}, 'headers': {
   'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Content-Length': '275', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.26.0', 'X-Amzn-Trace-Id': 'Root=1-61f390c9-4f257890038aef92188e537b'}, 'json': None, 'origin': '222.163.139.128', 'url': 'http://httpbin.org/post'}

说 明:POST请求中data参数的数据格式也可以是列表、元组或者是JSON。参数代码如下:

# 元组类型的表单数据
data = (('1', '能力有限的,而努力是无限的。'),
       ('2', ç))
# 列表类型的表单数据
data = [('1', '能力有限的,而努力是无限的。'),
       ('2', '能力有限的,而努力是无限的。')]

# 字典类型的表单参数
data = {
   '1': '能力有限的,而努力是无限的。',
      '2':'能力有限的,而努力是无限的。'}
# 将字典类型转换为JSON类型的表单数据
data = json.dumps(data)

注意:

requests模块中GET与POST请求的参数分别是params和data, 所以不要将两种参数填写错误。

相关文章
|
2月前
|
网络安全 Python
请求模块requests:请求方式
请求模块requests(一)
|
2月前
|
数据采集 Web App开发 开发工具
|
2月前
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
3月前
|
JSON API 数据格式
Python网络编程:HTTP请求(requests模块)
在现代编程中,HTTP请求几乎无处不在。无论是数据抓取、API调用还是与远程服务器进行交互,HTTP请求都是不可或缺的一部分。在Python中,requests模块被广泛认为是发送HTTP请求的最简便和强大的工具之一。本文将详细介绍requests模块的功能,并通过一个综合示例展示其应用。
|
4月前
|
存储 运维 Java
函数计算产品使用问题之如何使用Python的requests库向HTTP服务器发送GET请求
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
105 8
|
4月前
|
API Python
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
|
5月前
|
JSON API 数据格式
Requests库:轻松实现Python中的HTTP请求
Requests是Python的第三方HTTP库,简化了HTTP请求的发送,支持GET、POST等方法。要安装,使用`pip install requests`。Requests以其简洁API和强大功能成为网络编程首选工具,为开发者提供高效稳定的网络交互体验。
177 5
|
6月前
|
网络架构 Python
在Flask中,如何定义路由并处理HTTP请求的不同方法(GET、POST等)?
【4月更文挑战第25天】在Flask中,使用`@app.route()`装饰器定义路由,如`/hello`,处理GET请求返回'Hello, World!'。通过添加`methods`参数,可处理不同HTTP方法,如POST请求。单一函数可处理多种方法,通过检查`request.method`区分。动态路由使用 `<variable_name>` 传递URL变量到视图函数。这些基础构成处理HTTP请求的Flask应用。
98 1
|
6月前
|
JSON API 数据格式
使用Python的`requests`库进行HTTP请求
【4月更文挑战第12天】在Python中,`requests`库是发送HTTP请求的一个非常流行的工具。它提供了简单且强大的API,使得开发者能够轻松地与RESTful API或其他网络服务进行交互。本文将介绍如何使用`requests`库进行基本的HTTP请求,包括GET、POST等请求方法,以及如何处理响应和异常。