XML を使用するオンライン GIS システムからデータをスクレイピングしようとしています。ペイロードを正常に投稿し、正しい結果で HTTP 200 を返すリクエスト ライブラリを使用して簡単なスクリプトを作成することができましたが、リクエストをスクレイピーに移動すると、継続的に413
. Wireshark を使用して 2 つのリクエストを調べたところ、いくつかの違いが見つかりましたが、完全に理解しているかどうかはわかりません。
スクレイピーでのリクエストは次のようになります。
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 リクエストと、スクレイピーな Request オブジェクトを生成するときの HTTP リクエストが含まれます。Scrapy を使用するとリクエストが大きくなるようです。リクエスト ライブラリを使用すると、2 番目の TCP セグメントが 2 番目の TCP セグメントよりも 21 バイト大きいようです。Content-Length ヘッダーは、スクレイピー リクエストでも 2 回設定されます。
スクレイピーでこの種の問題を経験した人はいますか? これまでに 413 スクレイピングを受けたことはありません。