python - 在与 Scrapy 进行身份验证的登录 session 后使用 Selenium

标签 python python-2.7 selenium scrapy

环顾四周,似乎如果您通过 Scrapy 登录网站,如果您尝试在蜘蛛中使用 Selenium,则经过身份验证的登录 session 不会转移。有没有办法将该 session 转移到 Selenium?或者我是否必须使用 Selenium 重新登录该网站?

谢谢!

最佳答案

session 很可能只是您的 cookie。因此,要转换为将 session 转移到 Selenium webdriver,您需要将 scrapy 请求的 cookie 设置为 selenium。

Scrapy 足够智能,可以自行跟踪 cookie,您可以在 response.headers 中找到当前请求的 cookie。
然后您可以为您的网络驱动程序设置这些 cookie:

driver.add_cookie({'name': 'foo', 'domain': 'bar'})

您可以使用字典理解将 response.headers['Set-Cookie'] 转换为字典,例如:

import re
foo = response.headers['Set-Cookie']
values = {k.strip():v for k,v in re.findall(r'(.*?)=(.*?);', foo)}
driver.add_cookie(values)

注意:一些网站可以使用更复杂的 session ,这些 session 也需要其他 header 匹配,但您也可以通过将 scrapy 响应 header 复制到您的 selenium webdriver 来复制它。

关于python - 在与 Scrapy 进行身份验证的登录 session 后使用 Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38385832/

相关文章:

testing - 我想从命令行运行 Selenium 测试用例文件

Python 回溯 : Key Error

python - 如何使用 sklearn python 预测 future 的数据帧?

django - 如何在django中创建views.py的下载为excel选项

python-2.7 - 将触摸位置从自定义 kivy 小部件输出到标签

css - 无法使用 watir-webdriver 单击按钮

python - Python中的对数刻度使y刻度消失

python - 从 str(datetime) 的结果获取日期时间对象

php - 爬取页面时,如何从<a href>或<frame src>属性获取完整URL

node.js - Selenium WebDriver : Login to a website