2016-05-04 10 views
0

Unter Verwendung der RequestForm muss ich angeben, dass der Inhaltstyp application/json; charset=UTF-8 und Akzeptieren */* ist. Wie geht das?Wie spezifiziert man "Content-Type" und "Accept" auf FormRequest?

Derzeit sieht mein Code wie folgt aus:

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

Browser verwenden, die Anforderung:

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

Grundsätzlich wird Ihre Frage bei Bedarf richtig beantwortet. Sie können sehen, dass das, was Sie gefragt haben, korrekt erreicht wird, zeigt Ihre Anfrage Beispiel, Wenn Sie mehr Hilfe benötigen, öffnen Sie eine neue Frage bezüglich der gleichen mit Ihren Fehlern. – Murali

Antwort

0

Ihre Anfrage so sein sollte:

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

Es ist nicht funktionieren: http://pastebin.com/6mf2rtxU – Macabeus

+1

Sie fragte, wie Sie Header zu einer POST-Anfrage hinzufügen, und @ Murali antwortete: Wenn Sie Hilfe mit einer bestimmten POST-Anfrage benötigen, sollten Sie alle Informationen wegen Fehlern teilen könnte aus verschiedenen Gründen passieren. – eLRuLL

0

Scrapy Antrag hat ein Feld headers, das verwendet wird, um explizite Header zu definieren. Dies wird für Sie arbeiten.

yield scrapy.FormRequest(url='...', 
        formdata={ 
         ... 
        }, 
        cookies={...}, headers={'Content-Type': 'application/json','charset':'UTF-8'}, 
        callback=self.parse_second) 
Verwandte Themen