我想訪問蜘蛛內的會話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。
更多的細節在這裏回合我原來的問題:
不幸的是,我用了你的想法,但我dind't看到餅乾,雖然我知道肯定是他們自scrapy.contrib.downloadermiddleware存在.cookies中間件確實打印出cookies!這些正是我想要抓取的餅乾。
因此,這裏是我在做什麼:
的after_login(個體經營,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]
如下所示的輸出,的確是有餅乾,但我失敗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字典,YY y等與相應的值。
謝謝:)
我是否理解正確的話,你想在Facebook上進行身份驗證,但是從不同的領域抽取數據進行認證的Facebook? – warvariuc 2012-01-03 07:25:10