一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站。
获取一个可用的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登录网站
先打开要登录的网站,然后将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
让您学习到的每一节课都有所收获
《Linux就该这么学》是一本由资深运维专家刘遄老师及国内多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。荣获双11、双12购物狂欢节IT品类书籍销量冠军,2017年、2018年国内读者增速最快的技术书籍,您可以在京东、当当、亚马逊及天猫搜索书名后购买,亦可加刘遄老师微信交流学习(手指按住下图3秒钟即可自动扫描)~
刘遄老师QQ:5604922
☀ Linux技术交流群:2265381(新群,火热加群中……)
☀ 官方站点:www.linuxprobe.com
☀ 书籍在线学习(电脑在线阅读效果更佳):
http://www.linuxprobe.com/chapter-00.html
《Linux就该这么学》是一本基于最新Linux系统编写,面向零基础读者的技术书籍。从Linux基础知识讲起,然后渐进式地提高内容难度,详细讲解Linux系统中各种服务的工作原理和配置方式,以匹配真实生产环境对运维人员的要求,突显内容的实用性。想要学习Linux系统的读者可以点击按钮了解这本书,同时这本书也适合专业的运维人员阅读,作为一本非常有参考价值的工具书!