2016-05-04 6 views
0

RequestFormを使用して、コンテンツタイプがapplication/json; charset=UTF-8で、受諾が*/*であることを指定する必要があります。 これを行う方法は?FormRequestで "Content-Type"と "Accept"を指定する方法は?

は現在、私のコードは次のようになります。ブラウザを使用して

yield scrapy.FormRequest(url='...', 
         formdata={ 
          ... 
         }, 
         cookies={...}, 
         callback=self.parse_second) 

、要求は次のとおりです。

POST /PaginasPublicas/_SBC.aspx/pesquisaLoteIntegracaoTPCL HTTP/1.1 
Host: geosampa.prefeitura.sp.gov.br 
Connection: keep-alive 
Content-Length: 118 
Accept: */* 
Origin: http://geosampa.prefeitura.sp.gov.br 
X-Requested-With: XMLHttpRequest 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 
Content-Type: application/json; charset=UTF-8 
Referer: http://geosampa.prefeitura.sp.gov.br/PaginasPublicas/_SBC.aspx 
Accept-Encoding: gzip, deflate 
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4,ar;q=0.2,de;q=0.2,es;q=0.2,fr;q=0.2,it;q=0.2,ja;q=0.2,pl;q=0.2,tr;q=0.2,zh-TW;q=0.2 
Cookie: ASP.NET_SessionId=bvvghxvsxgwzuyaudsqn5m5q 
+0

基本的に、質問は必要に応じて正しく回答されます。 尋ねたことが正しく達成されていることがわかります。リクエストサンプルには、さらに多くの助けが必要な場合は、エラーに関する新しい質問を開きます。 – Murali

答えて

0

あなたの要求は次のようにする必要があります:

yield FormRequest(..., headers={'Content-Type': 'application/json','charset':'UTF-8'}) 
+0

これは動作しません:http://pastebin.com/6mf2rtxU – Macabeus

+1

あなたはPOSTリクエストにヘッダを追加する方法を尋ねました。@Muraliは答えました。特定のPOSTリクエストの助けが必要な場合は、エラーのためすべての情報を共有する必要がありますさまざまな理由で起こる可能性があります。 – eLRuLL

0

Scrapy要求があり明示的なヘッダを定義するのに使用されるフィールドheaders。これはあなたのために働くでしょう。

yield scrapy.FormRequest(url='...', 
        formdata={ 
         ... 
        }, 
        cookies={...}, headers={'Content-Type': 'application/json','charset':'UTF-8'}, 
        callback=self.parse_second) 
関連する問題