1.软文推荐

2.软文推荐

3.软文推荐

一直想用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

本文来源:www.lxlinux.net/7805.html,若引用不当,请联系修改。

相关文章 8

1

Linux系统patch命令详解 40秒前

在Linux系统中patch命令用于为特定软件包打补丁,他使用diff命令对源文件进行操作。下面良许教程网为大家分享一下Linux系统中patch命令的具...

2

10m带宽实际速度(10m带宽实际速度多少) 2分钟前

目录:1、联通10m的宽带正常下载速度是多少?2、中国联通10兆光纤,实际网速应该多少兆?3、10兆宽带下载速度是多少?4、10M的宽带实际速...

3

Docker配置网络详解 3分钟前

Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或将它们连接到非Docker工作负载。Docker容器和服务甚至不需要知道它们已...

4

嘉峪关云服务器(嘉峪关有没有联动云) 6分钟前

目录:1、从西安出发自驾十天左右去哪里?2、2020甘肃旅游导游词5篇3、大腿根部发黑,痒,有潮湿感是什么情况4、大腿内侧起红斑红疙瘩...

5

通过mergefs增加虚拟存储 7分钟前

如果您有多个磁盘或分区要用于一个媒体项目,而又不想丢失任何现有数据,但又想将所有文件都放置或安装在一个驱动器下,该怎么办?...

6

详解python内置函数.locals() 和 globals() 9分钟前

.locals() 和 globals() 是python 的内建函数,他们提供了字典的形式访问局部变量和全局变量的方式,下面重点为大家讲解一下.locals() 和 globals...

7

包含kvmcloud优惠券的词条 12分钟前

目录:...

8

详解Git中的版本回退 14分钟前

这实际的工作中,我们可能需要用到版本回退,所谓的版本回退,类似于撤销功能,也就是我们一直说的 Ctrl + Z 大法,假如我们在新开发的...