我想访问蜘蛛内的会话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