gpt4 book ai didi

session - 在 scrapy 蜘蛛中访问 session cookie

转载 作者:行者123 更新时间:2023-12-02 03:52:41 24 4
gpt4 key购买 nike

我正在尝试访问蜘蛛中的 session cookie。我首先使用蜘蛛登录社交网络:

    def parse(self, response):

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

after_login中,我想访问 session cookie,以便将它们传递到另一个模块(此处为selenium),以通过经过身份验证的 session 进一步处理页面。

我想要这样的东西:

     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 不会返回 session cookie。

如何获取 session cookie?我正在查看 cookies 中间件: scrapy.contrib.downloadermiddleware.cookiesscrapy.http.cookies 但似乎没有任何直接的方法来访问 session cookies 。

关于我原来的问题的更多详细信息:

不幸的是,我使用了你的想法,但我没有看到cookie,尽管我确信它们存在,因为scrapy.contrib.downloadermiddleware.cookies中间件确实打印出了cookie!这些正是我想要抓取的cookie。

这就是我正在做的事情:

after_login(self,response) 方法在正确的身份验证后接收响应变量,然后我使用 session 数据访问 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 等以及相应值的字典。

谢谢:)

最佳答案

一个典型的例子是拥有一个登录服务器,它在成功登录后提供一个新的 session ID。这个新的 session ID 应该与另一个请求一起使用。

这是从源代码中获取的代码,它似乎对我有用。

print 'cookie from login', response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=")[1]

代码:

def check_logged(self, response):
tmpCookie = response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=")[1]
print 'cookie from login', response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=")[1]
cookieHolder=dict(SESSION_ID=tmpCookie)

#print response.body
if "my name" in response.body:
yield Request(url="<<new url for another server>>",
cookies=cookieHolder,
callback=self."<<another function here>>")
else:
print "login failed"
return

关于session - 在 scrapy 蜘蛛中访问 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com