Доступ к cookie сеанса в пауках scrapy

Я пытаюсь получить доступ к cookie сеанса внутри паука. Сначала я вхожу в систему, чтобы социальная сеть, использующая в пауке:

    def parse(self, response):

        return [FormRequest.from_response(response,
                formname='login_form',
                formdata={'email': '...', 'pass':'...'},
                callback=self.after_login)]

В after_login я хотел бы получить доступ к файлам cookie сеанса, чтобы передать их другому модулю (здесь селен) для дальнейшей обработки страницы с помощью аутентифицированного сеанса .

Я бы хотел что-то вроде этого:

     def after_login(self, response):

        # process response
        .....

        # access the cookies of that session to access another URL in the
        # same domain with the autehnticated session.
        # Something like:
        session_cookies = XXX.get_session_cookies()
        data = another_function(url,cookies)

К сожалению, response.cookies не возвращает файлы cookie сеанса.

Как мне получить файлы cookie сеанса? Я просматривал промежуточное ПО для файлов cookie : scrapy.contrib.downloadermiddleware.cookies и scrapy.http.cookies , но, похоже, нет простого способа получить доступ к файлам cookie сеанса.

Некоторые подробности здесь насчет моего первоначального вопроса:

К сожалению, я воспользовался вашей идеей, но не вижу файлов cookie, хотя я точно знаю, что они xists, так как промежуточное ПО scrapy.contrib.downloadermiddleware.cookies распечатывает файлы cookie! Это именно те куки, которые я хочу захватить.

Итак, вот что я делаю:

Метод after_login (self, response) получает переменную ответа после правильной аутентификации, а затем я обращаюсь к URL-адресу с данными сеанса:

  def after_login(self, response):

        # testing to see if I can get the session cookies
        cookieJar = response.meta.setdefault('cookie_jar', CookieJar())
        cookieJar.extract_cookies(response, response.request)
        cookies_test = cookieJar._cookies
        print "cookies - test:",cookies_test

        # URL access with authenticated session
        url = "http://site.org/?id=XXXX"     
        request = Request(url=url,callback=self.get_pict)   
        return [request] 

Как показано ниже, действительно есть файлы cookie, но мне не удается их захватить с помощью cookieJar:

cookies - test: {}
2012-01-02 22:44:39-0800 [myspider] DEBUG: Sending cookies to: <GET http://www.facebook.com/profile.php?id=529907453>
    Cookie: xxx=3..........; yyy=34.............; zzz=.................; uuu=44..........

Поэтому я хотел бы получить словарь, содержащий ключи xxx, yyy и т. д. с соответствующими значениями.

Спасибо :)

17
задан mikolune 3 January 2012 в 07:15
поделиться