一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站。
目前创新互联已为近千家的企业提供了网站建设、域名、虚拟主机、网站运营、企业网站设计、安阳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
获取的cookies会保存为一个json格式的文件。不过在打开网站后,登录操作需要自己手动进行一下,代码中有注释,大家可以注意一下,
代码如下:
#!/usr/bin/python
#coding=utf-8
from selenium import webdriver
import time
import json
def get_cookies(test_url):
#保存cookies的文件
file = 'cookies.json'
#打开需要获取cookies的网站
driver = webdriver.Firefox()
driver.implicitly_wait(5)
driver.get(test_url)
driver.maximize_window()
#网站打开后,在时间内手动执行登录操作
time.sleep(60)
#登录成功后,获取cookies并保存为json格式
cookies = driver.get_cookies()
fp = open(file,'w')
json.dump(cookies,fp)
fp.close()
#关闭浏览器
driver.close()
if __name__ == "__main__":
url = raw_input('please input url:')
get_cookies(url)
先打开要登录的网站,然后将cookies从之前保存的json文件读取出来,然后添加到浏览器,刷新界面,即可实现登录,然后便可以进行发微博的操作,具体元素定位,请大家百度selenium的一些基本用法,此处不再赘述。代码中也给出了不打开浏览器的方式来实现功能。
代码如下:
#!/usr/bin/python
#coding=utf-8
from selenium import webdriver
import json
import time
file = 'cookies.json'
#打开浏览器,若不想打开浏览器运行脚本,可以使用下面注释掉的方法
driver = webdriver.Firefox()
#以headless模式运行脚本,可以实现不打开浏览器对网站进行操作
#option = webdriver.FirefoxOptions()
#option.add_argument(argument='-headless')
#driver = webdriver.Firefox(firefox_options=option)
#打开网址
def open_url(url):
driver.get(url)
driver.implicitly_wait(5)
driver.maximize_window()
#向浏览器添加保存的cookies
def add_cookies():
fp = open(file,'r')
cookies = json.load(fp)
fp.close()
for cookie in cookies:
driver.add_cookie(cookie)
if __name__ == "__main__":
#输入要打开的网站并打开
test_url = raw_input('please input url:')
open_url(test_url)
time.sleep(5)
#添加cookies后刷新界面,实现免密登录
add_cookies()
driver.refresh()
# 发送微博
#定位到微博输入框,点击输入框
driver.find_element_by_xpath("//textarea[@class='W_input']").click()
time.sleep(2)
#输入需要发送的内容
driver.find_element_by_xpath("//textarea[@class='W_input']").send_keys('Test message')
time.sleep(3)
#点击发送按钮
driver.find_element
本文标题:使用selenium实现cookies免密登录
地址分享:http://www.mswzjz.com/qtweb/news16/209116.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联