第一个实用python程序——自动填写工作日志、签到

刚刚把文章重看了一遍,自己给的评价就是:闲的没事干了?

1. 前言

一直苦于每天要分上下午两次写工作日志(不太能理解单位某些部门的脑洞……一天一次不行么?噢……噢噢,好吧,你们抄的模板就是分上下午的,不怪你们了),而现在正在看的Python做这些自动化的工作属于python擅长的部分,于是花了半天时间写了相关代码,经测试基本成功(文后放出)。因为每周工作日内容都差不多,只要判断下当天是周几,把周几上午/下午的文本粘贴进去就可以了,所以程序很简单。

代码什么的都是别人现成的轮子,拿来照着改改就是了,没什么优点可言。缺点是大把的:不够精简,基本只是顺序结构,连个循环都没有。。。。鉴于目前的思路是够用就好,所以……对于程序这部分,边学边改吧。

这里要记录的是初用Python踏过的坑,为了填坑,花的时间比写代码的时间要长的多,为了让自己今后不再犯,另外也给遇到相似经历的初学者们一点解决的方案,故留此文。

说明下环境:Windows 10 + Python3 + Pychram 2017.3 + firefox
(在windows下编程,微软分分钟教你做人)


2. 程序构成

  • 第一部分,自动登陆工作日志网站,根据周几自动填写当天工作日志;
  • 第二部分,自动登陆什么值得买,在大妈家签到;
  • 第三部分,自动给自己邮箱发条邮件,告诉自己任务已完成。

2.1 自动填写日志部分遇到的坑

  1. 使用pip进行安装selenium,按之前自己学的,pip是啥都不知道。。。。需要在cmd中使用pip命令安装。装不上?是不是path没有对?
  2. 关于Path,Windows 10中不需要加;,要建立在Path中。python安装的时候一定要记得把path那一项选上。
  3. firefoxfirefox 不是firfox
  4. 不是安装好selenium就可以使用了,还要在官网下载firefox对应的驱动,并且把这个驱动路径也加入Path才能调用!
  5. 如果还是selenium不可用,提示:# no module named 'selenium'需要调Pychram中设置,具体可参考:https://www.cnblogs.com/lovexin/p/8612197.html

2.2 自动登陆什么值得买遇到的坑

  • 由于前序自己登陆工作日志网站,在此处基本没有遇到坑。(顽皮)
  1. 需要通过firefox的查看元素,慢慢找对应的签到按钮的元素,不是by id,而是by class name,也是可以找到的。
  2. 在网页上签到似乎只能签到,不能领积分/补签什么的,还得到手机上操作下,宝宝心里苦。。。。

2.3 自动给自己邮箱发邮件遇到的坑

  1. 一开始使用的是126邮箱发送邮件,发完三条测试邮件之后再怎么发都显示失败,开始绑定手机,使用安全密码……泥煤的除了在126自家的邮箱大师上能发邮件,第三方邮件app全阵亡,提示发送失败。这个原因查了好长时间,后来分析,估计126把我当spam了,才发几条给自己的邮件就封,你也太狠了吧。好吧,转向鹅厂,搞了一半突然灵光乍现,为毛不用139邮箱呢?也有smtp,收到邮件还“bang~”给你手机发个短信说邮件收到啦邮件收到啦。于是现在每天点完“执行”按钮后,等着收短信,还是狠开心滴。
  2. 期间遇到一件奇怪的事情,明明使用的126邮箱配置信息,但企鹅邮箱里收到了一封自己qq邮箱发给自己qq邮箱的测试邮件,实在莫名啊。
  3. 在想到使用139邮箱之前,还考虑过使用微信提醒。需要pip装itchat。装好之后发觉达不成自己要的目标,弃用。但似乎可以做不少事情。

3. 现在遇到的问题,今后计划的方案:

  1. firefox启动太慢。每次使用都要磨磨蹭蹭半天firefox才能出来。今后考虑是不是可以不用UI界面,所有这些后台解决。
  2. firefox加载太慢。页面打开了99%,就一个无所谓的小图片或者什么元素的没有加载完成,就是不进行下一步。之前查资料说有什么隐形加载什么的,可以加以改进。
  3. 程序代码傻大粗……还能说啥,慢慢改呗。
  4. 每次都要点太麻烦,后续打算搞下树莓派,每天下午三点自动运行,酱紫,今后就等着收短信就好了。——世界是懒人推动的!
  5. 利用树莓派做个服务器跑下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: 无法发送邮件")


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353