Raf*_*ida 4 python cookies selenium web-scraping phantomjs
我有一个带有cookie的泡菜,我通过以下命令创建
def doLogin(driver):
#do login stuff
pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))
Run Code Online (Sandbox Code Playgroud)
我有示例代码来获取cookie
driver = webdriver.PhantomJS()
self.doLogin(driver)
driver.delete_all_cookies()
for cookie in pickle.load(open("cookies.pkl", "rb")):
driver.add_cookie(cookie)
Run Code Online (Sandbox Code Playgroud)
我可以看到它很好地创建了cookie,因为如果我print没关系,add_cookie()正在做阴影的事情
这给出了以下例外
WebDriverException:消息:{"errorMessage":"无法设置Cookie","请求":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection": "接近", "内容长度": "219", "内容类型": "应用/ JSON;字符集= UTF-8", "主机": "127.0.0.1:50738","User-Agent": "Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"sessionId \":\"391db430-154a-11e6-8a0a-ef59204729f5 \" ,"cookie":{\"domain \":\"secretWebsite \",\"name \":\"JSESSIONID \",\"value \":\"8332B6099FA3BBBC82893D4C7E6E918B \",\"path \": \"也是一个秘密\",\"httponly \":false,\"secure \":true}}","url":"/ cookie","urlParsed":{"anchor":"","查询":"", "文件": "曲奇", "目录": "/", "路径": "/曲奇", "相对": "/曲奇", "口": "", "主机": "", "密码": "", "用户": "", "用户信息": "", "权威": "", "协议": "", "源": "/饼干", "queryKey" :{},"chunks":["cookie"]},"urlOriginal":"/ session/391db430-154a-11e6-8a0a-ef59204729f5/cookie"}}屏幕截图:可通过屏幕获得
为了工作,我需要的是将webdriver更改为Firefox
这是一个已知的PhantomJS问题吗?
似乎PhantomJS驱动程序不支持某些键/值.为了克服这个问题,我会注入最重要的execute_script:
def save_cookies(driver, file_path):
LINE = "document.cookie = '{name}={value}; path={path}; domain={domain}; expires={expires}';\n"
with open(file_path, 'w') as file :
for cookie in driver.get_cookies() :
file.write(LINE.format(**cookie))
def load_cookies(driver, file_path):
with open(file_path, 'r') as file:
driver.execute_script(file.read())
from selenium import webdriver
driver = webdriver.PhantomJS()
# load the domain
driver.get("https://stackoverflow.com/users/login")
# save the cookies to a file
save_cookies(driver, r"cookies.js")
# delete all the cookies
driver.delete_all_cookies()
# load the cookies from the file
load_cookies(driver, r"cookies.js")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3483 次 |
| 最近记录: |