2017-08-14 2 views
0

Ich crawle einige Daten mithilfe von Scrapy. Jedes Mal, wenn ich product detail im Browser öffne und überprüfe, dass vom Browser angefordert wurde, immer den gleichen korrekten Inhalt ohne Zeichen '?????'
Aber wenn ich die Anfrage oben auf Browser öffnen, dann hat es den richtigen Inhalt etwa 10 mal zurückgegeben. Dann gab es einen falschen Inhalt zurück, indem das Zeichen '?????'
Können Sie erklären, warum dieses Problem auftritt? Und wie kann Scrapy als echter Browser agieren?
Diese korrekte InhaltGET-Anforderung gibt verschiedene JSON-Inhalte zurück

{"itemid": 43369300, "liked": false, "offer_count": 6, "videos": [], "image": "41dabd8fe9b7cbc2ab30501592f65a80", "image_list": ["41dabd8fe9b7cbc2ab30501592f65a80", "91bf75885fffd2b1fbcc55099457bc22", "f4516bb9667f8329f031ff75896a71fd", "d2639a1ffe75912873de6d8e011dc0dd", "38d00637b021e1701542a6afa7ae58f3", "10ab99e3bd211bd4dd63993555d6454b"]..... 

Und das ist falsch Inhalt

{"itemid": 43369300, "liked": false, "offer_count": 10, "videos": [], "rating_star": 4.069458216402549, "image": "41dabd8fe9?????????????????????", "image_list": ["41dabd8fe9?????????????????????", "91bf75885f?????????????????????", "f4516bb966?????????????????????", "d2639a1ffe?????????????????????", "38d00637b0?????????????????????", "10ab99e3bd?????????????????????"]..... 

Sie mit anderen Anforderungen testen request1, request2 ...

+0

Liste die URL, auf der Sie "????" und passiert es, dass es bei der gleichen URL immer wieder passiert? Auch posten Sie den Inhalt in einem Pastebin und post den Link –

+0

Ich bearbeitet meine Frage als Ihr Kommentar @TarunLalwani –

+0

Ich habe überprüft und im Browser 5-10 mal aktualisiert, ändert sich der Inhalt für die gleiche Anfrage. Dies ist offensichtlich Kratzschutz in Aktion. Sie müssen Proxies verwenden und Ihre Anfragen rotieren lassen. –

Antwort

0

Das Problem sein kann, weil Sie schlagen werden die API direkt und sie verhindern Kratzen. Wenn ich die unter URL mit curl und zusätzliche Header 10-15 Mal getroffen, es funktioniert gut

curl 'https://xxxx.vn/api/v0/shop/6088300/item/43369300/shipping_info_to_address/?state=H%C3%A0%20N%E1%BB%99i&city=Huy%E1%BB%87n%20Ba%20V%C3%AC&district=' \ 
-H 'Pragma: no-cache' \ 
-H 'DNT: 1' \ 
-H 'Accept-Encoding: gzip, deflate, br' \ 
-H 'Accept-Language: en-US,en;q=0.8' \ 
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36' \ 
-H 'X-API-SOURCE: pc' \ 
-H 'Accept: */*' \ 
-H 'Cache-Control: no-cache' \ 
-H 'X-Requested-With: XMLHttpRequest' \ 
-H 'Referer: https://xxx.vn/H%E1%BB%99p-%C4%91%E1%BB%B1ng-gi%C3%A0y-trong-su%E1%BB%91t-theo-d%C3%B5i-c%C3%B3-gi%C3%A1-t%E1%BB%91t-i.6088300.43369300' \ 
--compressed 

Also ich denke, 4 wichtige Header, die Sie

'X-Requested-With: XMLHttpRequest' 
'X-API-SOURCE: pc' 
'Referer: https://xxx.vn/H%E1%BB%99p-%C4%91%E1%BB%B1ng-gi%C3%A0y-trong-su%E1%BB%91t-theo-d%C3%B5i-c%C3%B3-gi%C3%A1-t%E1%BB%91t-i.6088300.43369300' 
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36' 

senden diese Header sind unter

beim Erstellen senden soll die Anfrage in Scrapy

+0

Es gibt immer noch Zeichen "??????" @Tarun Ich teste deine Anfrage mit Postman Chrome App –

+0

in Scrapy oder in Curl? Wie testen Sie? –

+0

Ich habe CSRF und Cookies entfernt, um zu sehen, ob es funktioniert, aber ich denke, dass Sie möglicherweise auch Cookies benötigen. Sehen Sie, was Sie brauchen, um sicherzustellen, dass Sie es so nah wie möglich an den Browser bringen –

Verwandte Themen