2016-11-11 5 views

Antwort

1

Ja, es gibt ein Beispiel in scrapy-splash README - siehe Session Handling Abschnitt. Stellen Sie zunächst sicher, dass alle Einstellungen korrekt sind. Verwenden Sie dann SplashRequest(url, endpoint='execute', args={'lua_source': script}), um Scrapy-Anfragen zu senden. Skript Rendering sollte wie folgt sein:

function main(splash) 
    splash:init_cookies(splash.args.cookies) 

    -- ... your script 

    return { 
     cookies = splash:get_cookies(), 
     -- ... other results, e.g. html 
    } 
end 

Es gibt auch ein komplettes Beispiel mit Cookiebehandlung, Kopf Handhabung usw. in scrapy-splash README - siehe letztes Beispiel here.

+0

Danke für die Hilfe Mikhail, was passiert, wenn ich Cookies für Aufrufe im Javascript setzen muss, 4 verschiedene Anfragen passieren, wenn ich 'splash: go (url)', möchte ich Cookies nach der zweiten Anfrage setzen –

+0

Sorry, ich verstehe die Frage nicht ganz. Cookies, die in AJAX-Antworten empfangen werden, sollten mit Splash-Cookiejar zusammengeführt und in splash zurückgegeben werden: get_cookies(). splash: init_cookies() setzt den Inhalt eines Browser-Cookiejars, der Browser sollte diese Cookies für alle Anfragen verwenden, einschließlich AJAX-Anfragen. Daher sollte das obige Skript unabhängig davon funktionieren, wie viele Anfragen Sie in Ihrem Lua-Skript stellen. –

+0

Oh, ich verstehe jetzt, also denke ich, das Problem ist nicht mit den Keksen. Ich versuche grundsätzlich, über Splash auf Crunchbase.com zuzugreifen, sie haben einen seltsamen Bot-Schutz. Der Zugriff von einem Browser funktioniert immer. Haben Sie eine Idee, wie Sie das Verhalten von Splash genau wie in einem Browser machen können? –