我试图从使用XML的在线GIS系统中搜集一些数据。我能够使用成功发布有效负载的请求库来启动快速脚本,并返回具有正确结果的HTTP 200,但在将请求移至scrapy时,我不断获得413
。我使用Wireshark检查了这两个请求并发现了一些差异,但我并不完全确定我理解它们。
scrapy中的请求如下:
yield Request(
self.parcel_number_url,
headers={'Accept': '*/*',
'Accept-Encoding': 'gzip,deflate,sdch',
'Accept-Language': 'en-US,en;q=0.8',
'Connection': 'keep-alive',
'Content-Length': '823',
'Content-Type': 'application/xml',
'Host': 'xxxxxxxxxxxx',
'Origin': 'xxxxxxxxxxx',
'Referer': 'xxxxxxxxxxxx',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'},
method='POST',
cookies={'_ga': 'GA1.3.1332485584.1402003562', 'PHPSESSID': 'tpfn5s4k3nagnq29hqrolm2v02'},
body=PAYLOAD,
callback=self.parse
)
我检查过的数据包位于:http://justpaste.it/fxht
包括在使用请求库时的HTTP请求以及在生成scrapy Request对象时的HTTP请求。使用scrapy时,请求似乎更大,使用请求库时,第二个TCP段看起来比第二个TCP段大21个字节。 Content-Length标头也会在scrapy请求中设置两次。
有没有人经历过这种scrapy问题?我之前从来没有抓过任何413的东西。
答案 0 :(得分:0)
我通过删除Cookie而不是设置" Content-Length"来解决这个问题。在我提出的请求上手动标题。看起来这两个东西是第二个TCP段上的额外21个字节,并导致413响应。也许服务器正在解释" Content-Length"作为2"内容长度"的组合值标题因此返回413,但我不确定。