放假了,没人比我更无聊,在家制作了一个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代码,并且得到返回值。只得等以后遇到“有缘分”的项目再来尝试。

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

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

  1. python自动评论_selenium+python 的微博自动转赞评功能实现

    放假了,在家制作了一个selenium+python的微博自动转赞评程序. 程序分为四部分,依次是:登录+点赞+评论+转发,当点赞达到用户上限时去评论,评论至上限时去转发,出现验证码则退出程序.演示视 ...

  2. python脚本微博自动转发抽奖_谈谈我做的自动转发微博抽奖程序

    好几个月前,看到微博上的一则新闻,一个名叫 Hunter Scott 的歪果仁写了个程序,能够自动参与 Twitter 上的抽奖.结果,这个程序让他的账号@racer236连续 9 个月平均每天中了四 ...

  3. python Sina微博自动转发带抽奖字样的微博,添加关注,取消关注

    项目地址:https://github.com/chengshuyi/SinaWeibo 具有的功能 转发带抽奖字样的微博并可以@相应数量的好友 提取关注并添加关注 取消关注 获取粉丝列表 转载于:h ...

  4. python 自动抢红包_【Python】微博自动抢红包

    # -*- coding: utf-8 -*- import requests import js2xml from lxml import etree headers = { # 这边cookie替 ...

  5. 【Python】微博自动抢红包

    # -*- coding: utf-8 -*- import requests import js2xml from lxml import etree headers = { # 这边cookie替 ...

  6. python+selenium 爬取微博(网页版)并解决账号密码登录、短信验证

    使用python+selenium 爬取微博 前言 为什么爬网页版微博 为什么使用selenium 怎么模拟微博登录 一.事前准备 二.Selenium安装 关于selenium 安装步骤 三.sel ...

  7. Python selenium抓取微博内容的示例代码

    Selenium简介与安装  Selenium是什么?  Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE. ...

  8. python 微博自动点赞_用 Python 自动定时发微博

    ​其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微博的机器人,让它在上面飘一会. 怎么个飘 ...

  9. selenium+python抓取微博时遇到“展开全文”

    抓取微博时遇到"展开全文"时,在网上搜的很多都是利用工具设置二级规则之类,尝试之后利用selenium+python直接模拟点击,抓取展开全文后的文本. 在此利用的是xpath定位 ...

最新文章

  1. 《数据库技术原理与应用教程(第2版)》——习 题 1
  2. Shovels Shop
  3. 转发: Visual Studio 2005常用插件
  4. 从手机App到网点交互请求的日志记录
  5. 【随笔】About QWERTY
  6. centos7 关闭防火墙的指令_CentOS7 怎么安装配置chrony时间同步服务?
  7. 小波变换(wavelet transform)的通俗解释(二)
  8. 三星成功开发LPDDR5X DRAM 将扩大超高速数据服务市场
  9. 在 .NET 中设置页面元素的 javascript 事件 - IEBrowser [5]
  10. 用Unity简单实现第三人称人物的移动和转向
  11. Mac xelatex
  12. 【互亿无线】如何选择国际短信服务商
  13. 前端开发者常见的英文单词汇总
  14. 声明圆锥体类,实现Area和Volume接口,计算表面积和体积,按体积比较大小。
  15. JavaScript参考文档
  16. 简单题我重拳出击,困难题我唯唯诺诺
  17. 详解数据仓库数据指标数据治理体系建设方法论
  18. 深度强化学习-A3C算法
  19. 第六章软件项目配置管理
  20. SitePoint Podcast#142:2011年最后一个小组

热门文章

  1. 海康摄像头尾部网线端口线序
  2. 计算机远程控制设计,远程控制软件的设计与实现
  3. Android源码环境搭建(aosp Ubuntu 16.04)
  4. linux在目录前加前缀,linux中批量添加文件前缀的操作方法
  5. 后台管理登陆注册跳转以及基础模板 附Gitlab源码
  6. 使用samba服务在Linux与Windows直接共享文件夹,海康威视网络摄像头录像视频存储到ubuntu服务器
  7. chrome浏览器虚拟摄像头
  8. ASP.NET Web应用程序发布到IIS
  9. 【Android常识】Android之父Andy Rubin:被乔布斯羡慕嫉妒的天才
  10. 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下: