我正在尝试从使用 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
这包括使用 requests 库时的 HTTP 请求和产生 scrapy Request 对象时的 HTTP 请求。使用scrapy时请求似乎更大,使用requests库时,看起来第二个TCP段比第二个TCP段大21个字节。Content-Length 标头在 scrapy 请求中也设置了两次。
有没有人遇到过这样的scrapy问题?我以前从来没有用 413 刮过任何东西。