首页 > 其他分享 >06.爬虫---urllib与requests请求实战(POST)

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

时间:2024-06-02 09:32:49浏览次数:14  
标签:06 请求 url urllib --- headers requests data response

06.urllib与requests请求实战POST


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

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

1.Urllib模块

使用示例:

import urllib.parse
import urllib.request

url = '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 requests

url = '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 requests

url = '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 requests

url = '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,请求,url,urllib,---,headers,requests,data,response
From: https://blog.csdn.net/hsadfdsahfdsgfds/article/details/139229905

相关文章

  • C#的移出窗体关闭操作 - 开源研究系列文章
          整理以前的代码。这次想到上次的一个例子,就是一个屏幕右下角显示的提示窗体,定时3秒自动关闭,如果鼠标移动到窗体上则停止关闭,鼠标移出后再定时关闭。这个效果笔者想到了方法,于是就记录在这个博文中。下面是提示窗体的那个解决方案。 1、项目目录;  ......
  • 自媒体(2)--头条算法机制,从0到1打造自媒体
    头条号算法机制一,机器算法推荐?平台根据关键词及用户的行为指标等数据,对平台的内容进行分析和精准化推荐,把用户喜欢的内容推荐给用户,把好的内容进行多次展示推荐,以实现用户获取的是自己喜欢的内容并持续性在本平台消费内容的过程。1,算法的指标?①文字关键词文章的标题、......
  • 【scikit-learn009】异常检测系列:单类支持向量机(OC-SVM)实战总结(看这篇就够了,已更新)
    1.一直以来想写下机器学习训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。2.熟悉、梳理、总结下scikit-learn框架OCSVM模型相关知识体系。3.欢迎批评指正,欢迎互三,跪谢一键三连!4.欢迎批评指正......
  • 3DS MAX备忘笔记(命令-面和元素)
    面层级轮廓(2d):缩放轮廓不改变边之间的关系插入(2d):复制已有轮廓并放缩,且连接对应的点(插入的距离均匀,直接放缩面距离不均匀)挤出(3d):可选挤出方向、挤出后面之间是否还连接 倒角(3d): 挤出+插入(二维面上自动等距边界放缩),(直接缩放挤出的面不等距)桥:l 直接多选面,点桥:元素间—......
  • 3DS MAX备忘笔记(命令-选择命令)
    选择命令循环:l 双击边使用,选择首尾相接的一圈边。l 选择某面+按ctrl双击旁边的面使用。l 无法选择多边面的一圈边l 点循环的边:均匀间隔选择。选择某边+按下点循环l 点循环的面:=点循环边+按下ctrl时转面层级(面层级不能直接点循环)环形:l 选择平行的一圈边。选择......
  • 3DS MAX备忘笔记(命令-全层级通用)
    全层级可用命令重置变换:l 清除对模型变换操作的记录。(防止变换层级滞留影响后续精细操作)l 快速添加重置变换修改器:选定对象-实用程序-重置变换-重置选定内容,(添加重置变换后再CTRLz撤回可能出错)l 重置变换可以同时对多对象使用l 修改器搜索添加的重置变换不好使(???l ......
  • 众测项目实战--有趣的xss漏洞
    这是一个挺有意思的xss漏洞,正常情况下,一个邮件存在xss漏洞,就可以发给其他普通用户,危害一般也就只能截止到去攻击普通用户,但是这个案例的邮件就很有意思了。打开网站,发现是一个经典的商城界面,这种网站,需要先去注册,注册之后,才能去测试各种功能和各种漏洞。注册后,直接进入个人......
  • 3DS MAX备忘笔记(命令-点层级)
    点层级焊接:l 修复破面,可以设置阈值,全选点后一键焊接所有挨得近的重复点l 合并两物体,可以设置阈值,全选两破面所含的点后一键焊接所有挨得近的重复点,连接两个破面 目标焊接:可以跨物体焊接两个破面的点(无阻挡)移除backspace退格:保留面删除点删除delete:直接连带删除点周......
  • TS-引用类型
    1.定义TS中的数据值分为原始值和引用值两种类型。原始值即最简单的数据,而引用值则是有多个值构成的复合对象。原始值和引用值的声明方式类似,都需要创建常量或变量,然后对其赋值。其不同之处是,在变量或常量保存之后,可以对这个值进行的操作有所区别。2.原始值与引用值原始值:存......
  • TS-类型转换(显式)
    1.将其他类型转换为布尔类型要将其他类型转换为布尔类型,只需要将待转换的值传入Boolean()函数varmsg:string="ok";varmsgToBollean:boolean=Boolean(msg);//得到trueBoolean()函数会判断传入的值是空值还是非空值。若表示非空值,则返回true若表示空值,则返回fals......