use*_*186 11 python json scrapy
我正在尝试创建一个可以发送content-type:application/json的FormRequest.
这是我尝试的:
yield FormRequest("abc.someurl.com", formdata=json.dumps({"referenceId":123,"referenceType":456}), headers={'content-type':'application/json'}, callback=self.parseResult2)
Run Code Online (Sandbox Code Playgroud)
如果我json.dumps()
用来处理formdata =中的表单数据,我得到的错误是
"exceptions.ValueError:需要多于1个值来解压"
我不能只使用列表
formdata={"referenceId":123,"referenceType":456}
Run Code Online (Sandbox Code Playgroud)
FormRequest有效,但服务器不接受.
import requests
import json
result = requests.post(url, json.dumps({"referenceId":123,"referenceType":456}), headers={'content-type':'application/json'})
Run Code Online (Sandbox Code Playgroud)
它可以在python命令提示符下工作,如上所述.
有任何想法吗?
-KM
小智 19
FormRequest用于模拟HTML表单(例如application/x-www-form-urlencoded).听起来你只是想用你的请求发布数据.既然你提到了'application/json'的内容类型,你可能想要做这样的事情:
request = Request( url, method='POST',
body=json.dumps(my_data),
headers={'Content-Type':'application/json'} )
Run Code Online (Sandbox Code Playgroud)
小智 6
from scrapy.http import JsonRequest
class TestSpider(scrapy.Spider):
def start_requests(self):
data = {
'name1': 'value1',
'name2': 'value2',
}
yield JsonRequest(url='http://www.example.com/post/action', data=data)
Run Code Online (Sandbox Code Playgroud)
查看更多:docs.scrapy.org#jsonrequest
归档时间: |
|
查看次数: |
6557 次 |
最近记录: |