环顾四周,似乎如果您通过 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/