请求模块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, 所以不要将两种参数填写错误。

相关文章
|
1月前
|
数据采集 JSON 应用服务中间件
urllib与requests模块万字超详细!!
本文介绍了Python中用于发送网络请求的两个重要模块:`urllib` 和 `requests`。首先,文章详细讲解了 `urllib` 模块的基本使用方法,包括构造请求、发送请求、处理响应等。接着,文章重点介绍了 `requests` 模块,强调了其在企业中的广泛应用,以及如何发送GET和POST请求、处理响应、使用代理、处理Cookie等内容。最后,文章还探讨了 `requests` 模块的高级功能,如处理证书错误、设置超时、使用 `retrying` 模块等,帮助读者全面掌握网络请求的处理技巧。
55 4
|
3月前
|
网络安全 Python
请求模块requests:请求方式
请求模块requests(一)
51 9
|
3月前
|
数据采集 Web App开发 开发工具
|
3月前
请求模块requests;代理服务
请求模块requests(五)
58 15
|
4月前
|
JSON API 数据格式
Python网络编程:HTTP请求(requests模块)
在现代编程中,HTTP请求几乎无处不在。无论是数据抓取、API调用还是与远程服务器进行交互,HTTP请求都是不可或缺的一部分。在Python中,requests模块被广泛认为是发送HTTP请求的最简便和强大的工具之一。本文将详细介绍requests模块的功能,并通过一个综合示例展示其应用。
101 11
|
3月前
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
5月前
|
存储 运维 Java
函数计算产品使用问题之如何使用Python的requests库向HTTP服务器发送GET请求
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
109 8
|
6月前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
【6月更文挑战第15天】Python的requests库简化了HTTP请求。安装后,使用`requests.get()`发送GET请求,检查`status_code`为200表示成功。类似地,`requests.post()`用于POST请求,需提供JSON数据和`Content-Type`头。
64 6
|
5月前
|
API Python
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
|
7月前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
472 0