selenium+python 的微博自动转赞评功能实现
放假了,没人比我更无聊,在家制作了一个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寻找状态为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 的微博自动转赞评功能实现相关推荐
- python自动评论_selenium+python 的微博自动转赞评功能实现
放假了,在家制作了一个selenium+python的微博自动转赞评程序. 程序分为四部分,依次是:登录+点赞+评论+转发,当点赞达到用户上限时去评论,评论至上限时去转发,出现验证码则退出程序.演示视 ...
- python脚本微博自动转发抽奖_谈谈我做的自动转发微博抽奖程序
好几个月前,看到微博上的一则新闻,一个名叫 Hunter Scott 的歪果仁写了个程序,能够自动参与 Twitter 上的抽奖.结果,这个程序让他的账号@racer236连续 9 个月平均每天中了四 ...
- python Sina微博自动转发带抽奖字样的微博,添加关注,取消关注
项目地址:https://github.com/chengshuyi/SinaWeibo 具有的功能 转发带抽奖字样的微博并可以@相应数量的好友 提取关注并添加关注 取消关注 获取粉丝列表 转载于:h ...
- python 自动抢红包_【Python】微博自动抢红包
# -*- coding: utf-8 -*- import requests import js2xml from lxml import etree headers = { # 这边cookie替 ...
- 【Python】微博自动抢红包
# -*- coding: utf-8 -*- import requests import js2xml from lxml import etree headers = { # 这边cookie替 ...
- python+selenium 爬取微博(网页版)并解决账号密码登录、短信验证
使用python+selenium 爬取微博 前言 为什么爬网页版微博 为什么使用selenium 怎么模拟微博登录 一.事前准备 二.Selenium安装 关于selenium 安装步骤 三.sel ...
- Python selenium抓取微博内容的示例代码
Selenium简介与安装 Selenium是什么? Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE. ...
- python 微博自动点赞_用 Python 自动定时发微博
其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微博的机器人,让它在上面飘一会. 怎么个飘 ...
- selenium+python抓取微博时遇到“展开全文”
抓取微博时遇到"展开全文"时,在网上搜的很多都是利用工具设置二级规则之类,尝试之后利用selenium+python直接模拟点击,抓取展开全文后的文本. 在此利用的是xpath定位 ...
最新文章
- 《数据库技术原理与应用教程(第2版)》——习 题 1
- Shovels Shop
- 转发: Visual Studio 2005常用插件
- 从手机App到网点交互请求的日志记录
- 【随笔】About QWERTY
- centos7 关闭防火墙的指令_CentOS7 怎么安装配置chrony时间同步服务?
- 小波变换(wavelet transform)的通俗解释(二)
- 三星成功开发LPDDR5X DRAM 将扩大超高速数据服务市场
- 在 .NET 中设置页面元素的 javascript 事件 - IEBrowser [5]
- 用Unity简单实现第三人称人物的移动和转向
- Mac xelatex
- 【互亿无线】如何选择国际短信服务商
- 前端开发者常见的英文单词汇总
- 声明圆锥体类,实现Area和Volume接口,计算表面积和体积,按体积比较大小。
- JavaScript参考文档
- 简单题我重拳出击,困难题我唯唯诺诺
- 详解数据仓库数据指标数据治理体系建设方法论
- 深度强化学习-A3C算法
- 第六章软件项目配置管理
- SitePoint Podcast#142:2011年最后一个小组
热门文章
- 海康摄像头尾部网线端口线序
- 计算机远程控制设计,远程控制软件的设计与实现
- Android源码环境搭建(aosp Ubuntu 16.04)
- linux在目录前加前缀,linux中批量添加文件前缀的操作方法
- 后台管理登陆注册跳转以及基础模板 附Gitlab源码
- 使用samba服务在Linux与Windows直接共享文件夹,海康威视网络摄像头录像视频存储到ubuntu服务器
- chrome浏览器虚拟摄像头
- ASP.NET Web应用程序发布到IIS
- 【Android常识】Android之父Andy Rubin:被乔布斯羡慕嫉妒的天才
- 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下: