当前位置: 首页 > 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

http://www.lryc.cn/news/226287.html

相关文章:

  • 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
  • 自主开发刷题应用网站H5源码(无需后端无需数据库)
  • java 读取excel/word存入mysql
  • 11.(vue3.x+vite)组件间通信方式之ref与$parent、$children
  • [工业自动化-12]:西门子S7-15xxx编程 - PLC从站 - ET200 SP系列详解
  • 消息队列简介
  • SQL中实现汉字的拼音首字母查询
  • 今天知道LiveData的ktx是真的香
  • SpringBoot中的桥接模式
  • AI爆文变现脚本:易用且免费的自动写作脚本更新了
  • 代码随想录算法训练营Day 49 || 123.买卖股票的最佳时机III 、188.买卖股票的最佳时机IV
  • threejs(11)-精通着色器编程(难点)2
  • 配置cuda和cudnn出现 libcudnn.so.8 is not a symbolic link问题
  • “目标值排列匹配“和“背包组合问题“的区别和leetcode例题详解
  • 火星加载WMTS服务
  • 为什么要学习去使用云服务器,外网 IP能干什么,MAC使用Termius连接阿里云服务器。保姆级教学
  • VS c++多文件编译
  • JVM关键指标监控(调优)
  • 【Proteus仿真】【Arduino单片机】LCD1602-IIC液晶显示
  • skynet学习笔记03— 服务
  • 34 Feign最佳实践
  • 软文推广中如何搭建媒体矩阵
  • Unity地面交互效果——5、角色足迹的制作
  • Centos8安装出错问题
  • 计算机网络技术
  • 当电脑桌面黑屏,而你只有一个鼠标该怎么办(重启方法的平替)
  • Leetcode2833. 距离原点最远的点
  • chrome 的vue3的开发者devtool不起作用
  • Redis数据结构七之listpack和quicklist
  • 单词规律问题