首先我们来看看我的辛酸历程,各种报错
报错1:服务器居然回个500来骗我说服务器故障,不得不说开发人员真的是太坏了,不过我就喜欢这样的。
报错2:没有足够的值解包,需要的是2个,结果只有1个,难道问题在这?我们再往下看
报错3:说无法解压缩,不可编辑的int对象,这是啥,莫非是我传的参数有问题?反复检查,怀疑人生中......
报错4:返回405,并且是一个GET请求,???,FormRequest不是POST请求吗,怎么变成了GET请求?又是一顿检查,各种修改,然后怀疑人生......
报错5:接收unicode、str或字节对象got dict,咦,怎么感觉好像有点思路了,请往下继续观看
经过尝试,我写了如下几种请求方法,从scrapy.FormRequest,到scrapy.http.FormRequest,以及什么formdata,body,各种参数,期间还怀疑是不是url的问题,是不是其他参数的问题,也不知道对不对,反正都测试了,结果就是一堆错误,并没有什么卵用。
yield scrapy.FormRequest(url=url, formdata=data, callback=self.parse)
yield scrapy.FormRequest(url=url, formdata=json.dumps(data), callback=self.parse)
yield scrapy.FormRequest(url=url, formdata=json.dumps(data).encode('utf-8'), callback=self.parse)
yield scrapy.FormRequest(url=url, body=data, callback=self.parse)
yield scrapy.FormRequest(url=url, body=json.dumps(data), callback=self.parse)
yield scrapy.FormRequest(url=url, body=json.dumps(data).encode('utf-8'), callback=self.parse)
yield scrapy.http.FormRequest(url=url, formdata=data, callback=self.parse)
yield scrapy.http.FormRequest(url=url, formdata=json.dumps(data), callback=self.parse)
yield scrapy.http.FormRequest(url=url, formdata=json.dumps(data).encode('utf-8'), callback=self.parse)
yield scrapy.http.FormRequest(url=url, body=data, callback=self.parse)
yield scrapy.http.FormRequest(url=url, body=json.dumps(data), callback=self.parse)
yield scrapy.http.FormRequest(url=url, body=json.dumps(data).encode('utf-8'), callback=self.parse)
yield scrapy.http.FormRequest(url=url, formdata=data, callback=self.parse)
最后,我放弃了FormRequet,换成了Request,手动指定请求方法为POST,才重要成功请求到数据。
yield scrapy.Request(url=url, body=json.dumps(data).encode('utf-8'), method="POST", callback=self.parse)
我是木子,关注我,让我们一起成长!