放假了,在家制作了一个selenium+python的微博自动转赞评程序。

程序分为四部分,依次是:登录+点赞+评论+转发,当点赞达到用户上限时去评论,评论至上限时去转发,出现验证码则退出程序。演示视频如下:

微博转赞评至上限程序效果演示

一、登录

调用谷歌浏览器+打开微博登录账号

二、点赞

点赞程序的基本原理就是,先让滚动条定位至待点赞的那一条评论,然后寻找赞按钮进行点击,这个操作好理解而且没什么难度。难点在于,当用户点赞数达到上限时,程序运行过程中会一直点击同一条评论的赞。原因是点赞数达到上限后,就算点击了赞按钮,系统也会取消该赞,该赞的状态还是like而不是liked,而程序的运行步骤是寻找like属性的赞进行点击,所以就会卡在一条评论上循环点赞,而不是跳出循环去评论。

这个时候,我找到的解决方法是这样的,创建一个列表,将点赞的内容通过list.append(target.text)放入列表,比较list[x]和list[x-1]的值是否一致,如果一致,表示两次定位like的内容是同一条评论,那么执行跳出程序。这里要注意的是,比较的条件要从x>=1开始,否则会报错,因为列表的第一项就是x[0],不可能和x[-1]比较。

判断点赞是否达到上限

因为我并非从事程序开发行业,只是觉得应该重拾自己的开发技艺,虽然大概率也不会去搞开发,可我知道为自己投资是一件正确的事情,所以开始学习新技术并打算将学习过程记录下来,在编写这个点赞程序的过程中,我有以下总结:

1、break只能跳出当前循环,如果存在多层循环,如何做到终止内部循环连带外部循环一起终止呢?

我们可以用变量exit_flag来控制循环。编写条件判断,当exit_flag==0时,运行外部循环,当exit_flag==1时,break掉外部循环。exit_flag的初始值为0,当内部循环终止时,只需要让变量exit_flag=1即可。

变量控制循环终止条件

2、try-except的用法

这里我拿滚动条举例,我希望程序自动跳过已经被点赞的内容去寻找还未点赞的内容,但寻找内容的过程中,很大可能性要用到滚动条将评论内容往下翻才能找到,这时候,就可以用try-except。

try-except控制滚动条滚动

运行try寻找状态为like的赞的位置,但凡try里面有一行程序是无法运行的,就会跳转至except,去执行except里面的程序。这样,就刚好能实现当无法在当前页面找到待点的赞,则滚动页面的功能。

三、评论

评论和转发相对于点赞,则简单很多,只需要找到相应的按钮元素,进行点击和发送即可。

这里的重难点同样是当评论达到上限时,会跳出2秒钟的提示框“您的评论太多,休息一会吧”并消失,那我如何判断是否弹出此提示框呢?我发现,虽然是弹窗,但这个弹窗是属于网页的一部分的,所以其元素仍然可以在网页中找到,关键在于,弹窗只有两秒钟的出现时间,我如何在短短两秒钟之内捕捉弹窗?

于是我采用了冻结界面的方式:在F12的 consle里输入——

setTimeout(function(){debugger;},3000),代表3秒后页面就被冻结。

冻结网页

在这里我们要凭感觉做的事情就是,在consle中按下回车键,让提示框在第3秒页面被冻结的那一刻出现就行了。

由此,我成功地判断了提示框是否弹出,如果提示框出现,则运行转发程序。

判断对话框是否弹出

四、转发

转发和评论的原理一模一样,只不过是判断验证码界面是否弹出,如果弹出,就退出浏览器,即:wd.close()。

五、小结

做这个转赞评程序让我学会了如何使用selenium和python实现网页端的自动化。selenium的核心其实就是能够准确选择元素,通过绝对路径选、相对路径选、通配符选、属性选、范围选、组选、父节点选、兄弟节点选,反正就是各种选。

虽然使用最基础的选择方式是足够完成项目的,但我还是尽量多地混搭着选择方式在使用。区别在于:就像人们能靠最基本的两条腿走天下,但同时人们还可以选择坐SUV、坐飞机、坐火箭走天下一样,基本方法可以完成任何项目,利用更多的交通工具或许更高效。

selenium就学到这里,有一点遗憾的就是在这个项目中没有使用到ActionChains 类模拟鼠标右键点击、双击、移动鼠标到某个元素、鼠标拖拽等动作;没有尝试让浏览器直接运行一段javascript代码,并且得到返回值。只得等以后遇到“有缘分”的项目再来尝试。

毕竟程序就是这样,学基本语法规则如同走马观花,是假学,只有用起来才知道哪些是木棍可丢弃,哪些是尖刀可杀敌。

python自动评论_selenium+python 的微博自动转赞评功能实现相关推荐

  1. selenium python怎么读_selenium+Python中的面试总结

    1. WebDriver原理 webDriver是按照client/server模式设计,client就是我们的测试代码,发送请求,server就是打开的浏览器来打开client发出的请求并做出响应. ...

  2. python web自动化_Selenium+Python Web自动化

    Selenium官方网站 http://selenium-python.readthedocs.io/ 配置使用环境 下载相应的浏览器驱动, Firefox 是默认的 本文以 chrome 为主 ,放 ...

  3. selenium python文档_selenium+python实现百度文库word文档抓取

    更新这个代码最近又改了一点,另外和其他一些小程序一起放在了一个jupyter notebook里,现在挂在github上面.github现在对jupyter notebook的支持非常的好,甚至可以直 ...

  4. python鼠标碰撞_selenium + python 鼠标事件

    十.鼠标事件 本章重点: ActionChains 类  context_click() 右击  double_click() 双击  drag_and_drop() 拖动 测试的产品中有一个操 ...

  5. python 滚动条方法_selenium+python 自动化中界面滚动条操作方法

    虽然webdriver提供了操作浏览器的前进和后退的方法,但对于浏览器滚动条并没有提供相应的操作方法,以下使用的方法: 借助JavaScript来控制浏览器的滚动条,webdriver提供了execu ...

  6. python浏览器自动化测试_Selenium+Python进行web自动化测试(Demo+API)

    Selenium官方网站 http://selenium-python.readthedocs.io/ 配置使用环境 下载相应的浏览器驱动, Firefox 是默认的 本文以 chrome 为主 ,放 ...

  7. python自动化下载_selenium+python自动化98--文件下载弹窗处理(PyKeyboard)

    前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...

  8. python自动化下载_selenium+python自动化--文件下载弹窗处理(PyKeyboard)

    前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...

  9. selenium python自动化文件下载_selenium+python自动化79-文件下载(SendKeys)【转载】...

    前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...

最新文章

  1. 管理到底是“管人”还是“管事”,百分之九十的人理解有问题
  2. 属于哪种虚拟化类型_经络淤堵,疲乏无力?有3种疲劳类型,你属于哪种,快来自测一下...
  3. Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压...
  4. BZOJ 1012 最大数
  5. SpringBatch 多线程(TaskExecutor)启动Job详解 (七)
  6. xml.etree ElementTree简介
  7. 如何把我的Java程序变成exe文件?
  8. redux 函数式组件_如何从函数式编程的角度学习Redux
  9. PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization
  10. 第十一届河南省程序设计大赛----部分题解
  11. Mysql基础之 ALTER命令
  12. 【Pygame系列】《雷霆对决》新版本敌军、玩家个个身怀绝技,火力爆棚~(升级版)
  13. 零基础和我一起学Python系统 第五天 字符串
  14. 用MLX90614红外温度传感器制作非接触式红外测温仪
  15. vim设置(非常全面),即.vimrc文件的配置
  16. python 数独_python 实现 数独 解法 (穷举法)
  17. vsftpd虚拟账户(虚拟用户,ubuntu16,舍弃虚拟用户配置文件)
  18. u)dym)l$_@3*0y3u_pvy@34ky1co1j$lfd1wp-w*8x%30@f7t$
  19. SLAM传感器篇:Velodyne激光雷达
  20. 什么是汽车公告?汽车公告主机厂要做什么?

热门文章

  1. UTONMOS:元宇宙链游之风、燎原之势
  2. 6个不亚于公务员的职业选择
  3. 闩锁和锁(Latches and Locks)
  4. 7.2—查找—Sear Insert Position
  5. 人工智能在医学影像中的研究与应用
  6. 心里窝火无语的图片_无语的说说心情、图片【12句】
  7. php fgetc,PHP 文件读取 fread、fgets、fgetc、file_get_contents 与 file 函数
  8. Anaconda+PyCharm+PyTorch+Gym深度强化学习环境搭建 送新手直接送进炼丹炉
  9. matlab 常值函数,matlab常用数值函数大全
  10. python爬12306_爬虫12306返回数据怎么解析