Scrapy Splash Form Request报错方法为NONE,如何设置为POST请求?
解决Scrapy Splash中SplashFormRequest请求方法为NONE的问题
你当前的代码错误地将请求方法配置放在了args字典里,导致Splash识别不到请求方法。针对不同的POST场景,有两种修正方案:
场景1:提交标准表单数据
如果是要模拟HTML表单提交,直接使用SplashFormRequest的method参数指定POST方法,并用formdata传递表单数据:
yield SplashFormRequest( url, formdata={"key1": "value1", "key2": "value2"}, # 替换为你的实际表单字段和值 method="POST", args={'wait': 5, 'cookies': cookie}, headers=headers, callback=self.parse_listings, dont_filter=True )
场景2:发送自定义请求体(如JSON)
如果需要发送非表单格式的POST请求(比如JSON数据),应该改用SplashRequest,直接指定method为POST并传入body参数:
yield SplashRequest( url, method="POST", body=body, # 替换为你的自定义请求体,比如json.dumps(your_data) args={'wait': 5, 'cookies': cookie}, headers=headers, callback=self.parse_listings, dont_filter=True )
关键说明
SplashFormRequest是表单提交专用类,请求方法通过method参数直接设置,不需要在args里配置http_method。- 若手动构造请求体,必须使用
SplashRequest而非SplashFormRequest,避免方法识别异常。 - 原代码中
args内的http_method和body配置都是错误写法,会导致Splash无法识别请求方法。
内容的提问来源于stack exchange,提问作者Aminah Nuraini
相关产品推荐
相关产品推荐

