当前位置: 首页 > news >正文

scrapy发json的post请求

一 、scrapy发json的post请求:

   def start_requests(self):self.headers = {'Content-Type': 'application/json'}json_data = {"productName": "", "currentPage": "1", "recordNumber": "10", "languageFlg": "0"}url = "https://xxxx"yield scrapy.Request(url=url,method="POST", body=json.dumps(json_data),  callback=self.parse_page,dont_filter=True,headers=self.headers)

二、表单 和 json传参区别:

在使用 requests 库发送 HTTP 请求时,jsondata 是两个常用的参数,用于传递不同类型的数据。

  1. json 参数

当你使用 json 参数时,你可以传递一个 Python 对象(通常是字典),requests 会自动将其转换为 JSON 格式,并设置请求的 Content-Type 为 application/json。这在发送 POST 请求时很有用,特别是当你需要向服务器传递 JSON 格式的数据时。

import requestsurl = 'https://example.com/api/endpoint'
data = {'key': 'value'}response = requests.post(url, json=data)

这会将 data 转换为 JSON,并设置请求的 Content-Type 为 application/json

  1. data 参数

data 参数用于发送表单数据,通常使用在 POST 请求中。data 参数应该是一个字典,其中包含要发送的表单字段和值。requests 会将这些数据编码为表单形式,并设置请求的 Content-Type 为 application/x-www-form-urlencoded

import requestsurl = 'https://example.com/api/endpoint'
data = {'key': 'value'}response = requests.post(url, data=data)

这会将 data 字典编码为表单形式,并将其作为请求的正文发送。

总体来说,json 主要用于发送 JSON 格式的数据,而 data 用于发送表单数据。选择使用哪个参数取决于服务器端期望接收的数据类型。如果你要发送 JSON 数据,通常会使用 json 参数。如果你需要模拟表单提交,可以使用 data 参数。

三、Scrapy里的Request和FormRequest:

3行和4行都是json的post请求,但是最好加上(“Content-Type”: “application/json”,)请求头。
测试时,没加请求头,报错了。

请求方式使用方法headers参数参数服务器端接收到参数
getRequest-?name=tomargs
postFormRequest有默认值formdata={“name”: “Tom”}form
postRequest-body=json.dumps({“name”: “Tom”})data, json
postRequest“Content-Type”: “application/x-www-form-urlencoded”body=json.dumps({“name”: “Tom”})form
postRequest“Content-Type”: “application/json”,body=json.dumps({“name”: “Tom”})data, json

参考文章:
Python爬虫:Scrapy的get请求和post请求

Scrapy Requests and Responses

相关文章:

  • 双十一“静悄悄”?VR购物拉满沉浸式购物体验
  • C# OpenCvSharp 基于直线检测的文本图像倾斜校正
  • Python爬虫——入门爬取网页数据
  • Wix使用velo添加Google ads tag并在form表单提交时向谷歌发送事件
  • AI由许多不同的技术组成,其中一些最核心的技术如下
  • 【手动创建UIWindow Objective-C语言】
  • 使用 pubsub-js 进行消息发布订阅
  • Django——orm模块创建表关系
  • 键盘win键无法使用,win+r不生效、win键没反应、Windows键失灵解决方案(亲测可以解决)
  • 【狂神说Java】Dubbo + Zookeeper
  • Kotlin基本语法
  • 深度学习pytorch之hub模块
  • Flutter笔记:光影动画按钮、滚动图标卡片组等
  • QT基础与细节理解
  • 开机自启动笔记本的小键盘
  • 【comparator, comparable】小总结
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 345-反转字符串中的元音字母
  • Angular6错误 Service: No provider for Renderer2
  • canvas 高仿 Apple Watch 表盘
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java多线程(4):使用线程池执行定时任务
  • leetcode98. Validate Binary Search Tree
  • Mac转Windows的拯救指南
  • spring + angular 实现导出excel
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聊聊flink的BlobWriter
  • 排序算法学习笔记
  • 使用Gradle第一次构建Java程序
  • 我这样减少了26.5M Java内存!
  • 学习JavaScript数据结构与算法 — 树
  • 阿里云重庆大学大数据训练营落地分享
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (13):Silverlight 2 数据与通信之WebRequest
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (LeetCode 49)Anagrams
  • (第二周)效能测试
  • (分布式缓存)Redis分片集群
  • (三)mysql_MYSQL(三)
  • (十)T检验-第一部分
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四) 虚拟摄像头vivi体验
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net Signalr 使用笔记
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET业务框架的构建
  • .pop ----remove 删除
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ C++ ] 继承