Webdriver & PhantomJS使用cookie免重复登录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webdriver & PhantomJS使用cookie免重复登录相关的知识,希望对你有一定的参考价值。


Webdriver & PhantomJS使用cookie免重复登录

  最近在接手一个网络爬虫的任务,任务要求登录到某管理系统后台,并抓取数据。该后天相比传统系统不同之处在于其后台全部是由js实现响应,因此传统的爬虫技术束手就擒了,本文先介绍基于webdriver的模拟浏览器操作,以及借助phantomjs完成js触发。

直接上代码:

#第一次登录时,需要进行账号密码登录
def login():
driver = webdriver.PhantomJS()
driver.get("此处为登录页面")
# 输入账号密码
driver.find_element_by_name("username").send_keys("C2WOGBEI")
driver.find_element_by_name("password").send_keys("mMkrBkz8Ke1a")
# 模拟点击登录
driver.find_element_by_xpath("//button[@id=button_login]").click()
# 等待3秒
time.sleep(3)
# 生成登录后快照
# driver.save_screenshot("./wjn.png")
html = driver.page_source #获得登录后跳转的页面html
print(登录成功)
# 保存当前登录的cookie
dictCookies = driver.get_cookies()
jsonCookies = json.dumps(dictCookies)
# 登录完成后,将cookie保存到本地文件
with open(./cookies.json, w) as f:
f.write(jsonCookies)
return driver
#第二次则直接将保存的cookie添加到driver里实现免密登录
def loginbycookie():
with open(./cookies.json, r, encoding=utf-8) as f:
listCookies = json.loads(f.read())
driver = webdriver.PhantomJS()
for cookie in listCookies:
driver.add_cookie(
domain:.xxx.com, # 此处为cookie.json文件中的domain
name: cookie[name],
value: cookie[value],
path: /,
expires: None
)
# 再次访问页面,便可实现免登陆访问
driver.get(该网站的任意一个页面)
print(cookie登录成功)


以上是关于Webdriver & PhantomJS使用cookie免重复登录的主要内容,如果未能解决你的问题,请参考以下文章

Webdriver & PhantomJS使用cookie免重复登录

Webdriver + PhantomJS 就挂在那里

如何使用 webdriver (Java) 在 phantomjs 上禁用字体抗锯齿?

模块“selenium.webdriver”没有属性“PhantomJS”

WebDriver自动化测试工具---PhantomJS的使用

Python:Phantomjs 找不到 chrome webdriver 工作正常的元素