python 什么值得买 签到_第一个实用python程序——自动填写工作日志、签到
刚刚把文章重看了一遍,自己给的评价就是:闲的没事干了?
1. 前言
一直苦于每天要分上下午两次写工作日志(不太能理解单位某些部门的脑洞……一天一次不行么?噢……噢噢,好吧,你们抄的模板就是分上下午的,不怪你们了),而现在正在看的Python做这些自动化的工作属于python擅长的部分,于是花了半天时间写了相关代码,经测试基本成功(文后放出)。因为每周工作日内容都差不多,只要判断下当天是周几,把周几上午/下午的文本粘贴进去就可以了,所以程序很简单。
代码什么的都是别人现成的轮子,拿来照着改改就是了,没什么优点可言。缺点是大把的:不够精简,基本只是顺序结构,连个循环都没有。。。。鉴于目前的思路是够用就好,所以……对于程序这部分,边学边改吧。
这里要记录的是初用Python踏过的坑,为了填坑,花的时间比写代码的时间要长的多,为了让自己今后不再犯,另外也给遇到相似经历的初学者们一点解决的方案,故留此文。
说明下环境:Windows 10 + Python3 + Pychram 2017.3 + firefox
(在windows下编程,微软分分钟教你做人)
2. 程序构成
第一部分,自动登陆工作日志网站,根据周几自动填写当天工作日志;
第二部分,自动登陆什么值得买,在大妈家签到;
第三部分,自动给自己邮箱发条邮件,告诉自己任务已完成。
2.1 自动填写日志部分遇到的坑
使用pip进行安装selenium,按之前自己学的,pip是啥都不知道。。。。需要在cmd中使用pip命令安装。装不上?是不是path没有对?
关于Path,Windows 10中不需要加;,要建立在Path中。python安装的时候一定要记得把path那一项选上。
firefox是firefox 不是firfox
不是安装好selenium就可以使用了,还要在官网下载firefox对应的驱动,并且把这个驱动路径也加入Path才能调用!
如果还是selenium不可用,提示:# no module named 'selenium'需要调Pychram中设置,具体可参考:https://www.cnblogs.com/lovexin/p/8612197.html
2.2 自动登陆什么值得买遇到的坑
由于前序自己登陆工作日志网站,在此处基本没有遇到坑。(顽皮)
需要通过firefox的查看元素,慢慢找对应的签到按钮的元素,不是by id,而是by class name,也是可以找到的。
在网页上签到似乎只能签到,不能领积分/补签什么的,还得到手机上操作下,宝宝心里苦。。。。
2.3 自动给自己邮箱发邮件遇到的坑
一开始使用的是126邮箱发送邮件,发完三条测试邮件之后再怎么发都显示失败,开始绑定手机,使用安全密码……泥煤的除了在126自家的邮箱大师上能发邮件,第三方邮件app全阵亡,提示发送失败。这个原因查了好长时间,后来分析,估计126把我当spam了,才发几条给自己的邮件就封,你也太狠了吧。好吧,转向鹅厂,搞了一半突然灵光乍现,为毛不用139邮箱呢?也有smtp,收到邮件还“bang~”给你手机发个短信说邮件收到啦邮件收到啦。于是现在每天点完“执行”按钮后,等着收短信,还是狠开心滴。
期间遇到一件奇怪的事情,明明使用的126邮箱配置信息,但企鹅邮箱里收到了一封自己qq邮箱发给自己qq邮箱的测试邮件,实在莫名啊。
在想到使用139邮箱之前,还考虑过使用微信提醒。需要pip装itchat。装好之后发觉达不成自己要的目标,弃用。但似乎可以做不少事情。
3. 现在遇到的问题,今后计划的方案:
firefox启动太慢。每次使用都要磨磨蹭蹭半天firefox才能出来。今后考虑是不是可以不用UI界面,所有这些后台解决。
firefox加载太慢。页面打开了99%,就一个无所谓的小图片或者什么元素的没有加载完成,就是不进行下一步。之前查资料说有什么隐形加载什么的,可以加以改进。
程序代码傻大粗……还能说啥,慢慢改呗。
每次都要点太麻烦,后续打算搞下树莓派,每天下午三点自动运行,酱紫,今后就等着收短信就好了。——世界是懒人推动的!
利用树莓派做个服务器跑下WP,嗯,当然需要用frp做个内网穿透。
4. 代码:
# 1. 工作日志填写
# 2. 张大妈签到
# 3. 发邮件汇报成功
# 0. 导入各种包
import time
import os
import smtplib
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from email.mime.text import MIMEText
from email.header import Header
# 1. 工作日志填写
# 选择浏览器
browser = webdriver.Firefox()
browser.get('http://此处为网址马赛克')
# 检查并输入用户名和密码,然后登陆
user = browser.find_element_by_id("username") #审查元素username的id
user.send_keys("此处为账号马赛克") #输入账号
password = browser.find_element_by_name("password") #审查元素password的name
password.send_keys("此处为密码马赛克") #输入密码
user.send_keys(Keys.RETURN) #实现自动点击登陆
# 登陆输入日志界面
browser.get('http://此处为网址2马赛克') # 手动“跳转”
# 查找并输入当前日期
date_now = browser.find_element_by_id("ctl00_MainContent_S_Time")
date_now.send_keys(time.strftime("%Y-%m-%d", time.localtime()))
# 啥都不做,默认选择“上午”
# 以下根据星期判断输入的内容
user = browser.find_element_by_id("ctl00_MainContent_TextBox1") #审查元素username的id
time_week = time.strftime("%w",time.localtime())
if time_week == "1" :
user.send_keys("周一任务马赛克") # 输入当日工作日志内容
elif time_week == "2":
user.send_keys("周二任务马赛克") # 输入当日工作日志内容
elif time_week == "3":
user.send_keys("周三任务马赛克") # 输入当日工作日志内容
elif time_week == "4":
user.send_keys("周四任务马赛克") # 输入当日工作日志内容
elif time_week == "5":
user.send_keys("周五任务马赛克") # 输入当日工作日志内容
else:
user.send_keys("") # 输入当日工作日志内容
# 点击按钮,提交日志
browser.find_element_by_id("ctl00_MainContent_Button1").click()
# 重新进入输入日志界面,刷新
browser.get('http://此处为网址2马赛克')
# 查找并输入当前日期
date_now = browser.find_element_by_id("ctl00_MainContent_S_Time")
date_now.send_keys(time.strftime("%Y-%m-%d", time.localtime()))
# 选择“下午”
browser.find_element_by_id("ctl00_MainContent_RadioButtonList1_1").click()
# 以下根据星期判断输入的内容
user = browser.find_element_by_id("ctl00_MainContent_TextBox1") #审查元素username的id
time_week = time.strftime("%w",time.localtime())
if time_week == "1" :
user.send_keys("周一任务马赛克") # 输入当日工作日志内容
elif time_week == "2":
user.send_keys("周二任务马赛克") # 输入当日工作日志内容
elif time_week == "3":
user.send_keys("周三任务马赛克") # 输入当日工作日志内容
elif time_week == "4":
user.send_keys("周四任务马赛克") # 输入当日工作日志内容
elif time_week == "5":
user.send_keys("周五任务马赛克") # 输入当日工作日志内容
else:
user.send_keys("") # 输入当日工作日志内容
# 点击按钮,提交日志
browser.find_element_by_id("ctl00_MainContent_Button1").click()
print("工作日志填写成功")
# 2. 张大妈签到
# 输入网址
browser.get('https://zhiyou.smzdm.com/user/login?redirect_to=https://post.smzdm.com/tougao/')
# 检查并输入用户名和密码,然后登陆
user = browser.find_element_by_id("username") #审查元素username的id
user.send_keys("账号马赛克") #输入账号
password = browser.find_element_by_name("password") #审查元素password的name
password.send_keys("密码马赛克") #输入密码
user.send_keys(Keys.RETURN) #实现自动点击登陆
time.sleep(2)
browser.get('https://www.smzdm.com/')
button_click = browser.find_element_by_class_name("J_punch").click()
time.sleep(2)
button_click = browser.find_element_by_class_name("J_punch").click()
print("张大妈签到成功")
# 3. 发邮件汇报成功
# 第三方 SMTP 服务
mail_host = "smtp.139.com" # 设置服务器
mail_user = "邮箱名马赛克" # 用户名
mail_pass = "邮箱密码马赛克" # 口令
sender = '发送邮箱马赛克'
receivers = ['接收邮箱马赛克'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
message = MIMEText('今日任务已完成,OK', 'plain', 'utf-8')
message['From'] = Header("发送邮箱马赛克", 'utf-8')
message['To'] = Header("接收邮箱马赛克", 'utf-8')
subject = time.strftime("%Y-%m-%d", time.localtime()) + " 任务已完成,大佬请放心!"
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
python 什么值得买 签到_第一个实用python程序——自动填写工作日志、签到相关推荐
- python写签到软件_第一个实用python程序——自动填写工作日志、签到
刚刚把文章重看了一遍,自己给的评价就是:闲的没事干了? 1. 前言 一直苦于每天要分上下午两次写工作日志(不太能理解单位某些部门的脑洞--一天一次不行么?噢--噢噢,好吧,你们抄的模板就是分上下午的, ...
- python一节课多久_第一节课 python简介
标签: 一.python特性概要 1. Python是解释性语言.我们和c比较一下. 2. Python特性总结:字节码.动态.缩进 2.1 字节码 2.2 动态语义 在赋值时确定数据类型 2.3 缩 ...
- python编程基本语法元素_第一章:Python基本语法元素
一.程序设计基本方法 1.计算机与程序设计 1.1 计算机的概念 计算机是根据指令操作数据的设备 具有以下两个特点: ①功能性:对数据的操作,表现为数据计算.输入输出结果和结果存储: ②可编程性: ...
- python print格式化输出类型_第一讲:Python print() 格式化输出
由于书本上少了这个知识,所以总结如下,各同学看完后完成对应的试题: 格式符为真实值预留位置,并控制显示的格式.格式符可以包含有一个类型码,用以控制显示的类型,如下: %s 字符串 (采用str( ...
- gitchat 会员值得买么_小米雷军亲自站台,599元的星特朗天文望远镜值得买么?...
今天,通过小米雷军微博无意中翻到,雷总亲自站台了一款天文望远镜.微博原文为"买个望远镜,晚上拍月亮如何?"简简单单几个字,再配上小米有品在售的信息,另很多的粉丝也是不淡定了,对于很 ...
- python开发基础戴歆第四章_第一阶段:Python开发基础 day04 课后练习
第一阶段:Python开发基础 day04 课后作业 1.简述python的五大数据类型的作用.定义方式.使用方法 数字类型 字符串类型 列表 字典 布尔型 答:数字类型分为整型(int)和浮点型(f ...
- python数据符号函数等一切皆对象_第一章:Python高级编程-Python一切皆对象
第一章:Python高级编程-Python一切皆对象 Python3高级核心技术97讲 笔记 1. Python一切皆对象 1.1 函数和类也是对象,属于Python的一等公民 "" ...
- python能安装到d盘吗_第一课:python安装
python是一门简洁.智能的语言,这是每个接触python的开发者对这门语言的第一印象.由于python具备这些特点,所以它同时也是一门对初学者绝对友好的语言.本期课程主要也是针对初学者,希望这篇课 ...
- python二级值得考吗_来自python二级考试的吐槽
ennnnnn,终于盼到3月,终于开始了满怀期待的计算机等级考试,来,咱们点开试题看看里面有什么吧 ......................... en ..................... ...
最新文章
- Trip to Saint Petersburg CodeForces-1250 C
- 提高工作效率-shell操作快捷键
- 谈javascript变量声明
- 直接拿来用!最火的Android开源项目(完结篇)
- Java Review - 并发编程_伪共享
- Python实现字符串反转的6种方法
- 【大话数据结构算法】哈夫曼树
- txt mining 2(tf-idf)
- Design pattern
- Spring使用@PropertySource加载Properties配置文件
- NachOS简述和源文件
- Java中判断一个字符串全为数字和字母
- [你必须知道的.NET] 调试技巧 - DebuggerDisplayAttribute
- 前台之boostrap
- 练手|常见近30种NLP任务的练手项目
- 沧小海基于xilinx srio核的学习笔记之第三章 xilinx srio核介绍(三)核配置
- linux系统创建桌面快捷方式,linux创建桌面快捷方式
- VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧
- 视频:使用FFMpeg实现视频录制与压缩
- 小米10如何安装google play商店