06.爬虫---urllib与requests请求实战(POST)

2024-05-29 16:20

本文主要是介绍06.爬虫---urllib与requests请求实战(POST),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

06.urllib与requests请求实战POST

    • 1.Urllib模块
    • 2.Requests模块
    • 3.实战(Requests)

POST请求
Python中的POST请求是HTTP协议中的一种请求方法,用于向服务器提交数据。与GET请求不同,POST请求将数据封装在请求体中,而不是在URL中传递。通常情况下,POST请求用于向服务器提交表单数据、上传文件等操作。

urllib与requests详细介绍在这里,就不再叙述,避免文章重复,杂乱 --urllib与requests请求实战(GET)

1.Urllib模块

使用示例:

import urllib.parse
import urllib.requesturl = 'http://baidu.com'
data = bytes(urllib.parse.urlencode({'name': 'meng','age': 19}), encoding='utf-8')
response = urllib.request.urlopen(url, data=data)
print(response.read().decode('utf-8'))

2.Requests模块

使用示例:

import requestsurl = 'http://baidu.com'
headers = {'User-Agent': 'xxxx'
}data = {'name': 'meng', 'age': 19}response = requests.post(url, data = data,headers = headers)
print(response.text)

3.实战(Requests)

以 https://e.juejin.cn/resources/github 为例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从这个https://e.juejin.cn/resources/github 接口拿到了载荷,也就是 请求体 body

{"category": "trending","period": "month","lang": "python","offset": 0,"limit": 30
}

接下来就可以通过代码去拿数据了

import requestsurl = 'https://e.juejin.cn/resources/github'
headers = {# 伪装浏览器'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 ''Safari/537.36'
}
#载荷 请求体
data = {"category": "trending","period": "month","lang": "python","offset": 0,"limit": 30
}
response = requests.post(url, data=data, headers=headers)
print(response.text)

在这里插入图片描述
返回数据:
在这里插入图片描述
注意:下面是请求不通的实例

  • 请求地址:
    在这里插入图片描述
  • 请求体:
    在这里插入图片描述
  • 响应体:
    在这里插入图片描述
  • 代码如下:
import requestsurl = 'https://api.juejin.cn/recommend_api/v1/short_msg/hot?aid=6587&uuid=7352457603614098982'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 ''Safari/537.36','Content-Type':'application/json'
}data = {'cursor': '0','limit': 30,'id_type': 4,'sort_type': 200
}
response = requests.post(url,data=data,headers=headers)
print(response.json())
  • 返回结果:
{'err_no': 2, 'err_msg': '参数错误', 'data': None}

参数错误???,也是困扰了我个多小时,当我把参数拿出来对比时发现了有点微妙

response = requests.post(url,data=data,headers=headers)
print(response.request.body)
print(response.json())

response.request.body 返回了

cursor=0&limit=30&id_type=4&sort_type=200

cursor 原本是字符串 ‘0’ ,转后变成了 0

  • 修改请求代码
response = requests.post(url,json=data,headers=headers)
print(response.request.body)
print(response.json())

response.request.body 返回了

{"cursor": "0", "limit": 30, "id_type": 4, "sort_type": 200}
  • 修改后返回结果:

在这里插入图片描述
拿到了!!!,哎

这篇关于06.爬虫---urllib与requests请求实战(POST)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014029

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1