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 requests

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Scrapy提供了多种方式来进行POST请求。其中一种方式是使用scrapy.Request,并将数据以JSON格式进行编码后作为请求体进行提交。这种方式需要手动编码JSON数据,并在请求中指定请求方法为POST。例如,可以使用以下代码进行POST请求: yield scrapy.Request(url, method='POST', body=json.dumps(data), callback=self.parse) \[1\] 另一种方式是使用scrapy.http.JsonRequest,它是Scrapy专门用于提交JSON数据的请求类。使用这种方式,你只需要将数据以字典形式传递给JsonRequest,并指定请求的URL即可。以下是使用JsonRequest进行POST请求的示例代码: yield JsonRequest(url='http://www.example.com/post/action', data=data) \[2\] 还有一种方式是使用scrapy.FormRequest,它用于提交form-data格式的数据。但是如果目标网站需要接收JSON格式的数据,使用这种方式提交可能会失败。以下是使用scrapy.FormRequest进行POST请求的示例代码: yield scrapy.FormRequest(url, formdata=data, callback=self.parse) \[3\] 根据你的需求和目标网站的要求,你可以选择适合的方式来进行POST请求。 #### 引用[.reference_title] - *1* *2* *3* [Scrapy 如何正确POST请求 获取到响应数据的三种写法](https://blog.csdn.net/weixin_44532999/article/details/129263189)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

confined.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值