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

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程序——自动填写工作日志、签到相关推荐

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

    刚刚把文章重看了一遍,自己给的评价就是:闲的没事干了? 1. 前言 一直苦于每天要分上下午两次写工作日志(不太能理解单位某些部门的脑洞--一天一次不行么?噢--噢噢,好吧,你们抄的模板就是分上下午的, ...

  2. python一节课多久_第一节课 python简介

    标签: 一.python特性概要 1. Python是解释性语言.我们和c比较一下. 2. Python特性总结:字节码.动态.缩进 2.1 字节码 2.2 动态语义 在赋值时确定数据类型 2.3 缩 ...

  3. python编程基本语法元素_第一章:Python基本语法元素

    一.程序设计基本方法 1.计算机与程序设计 1.1   计算机的概念 计算机是根据指令操作数据的设备 具有以下两个特点: ①功能性:对数据的操作,表现为数据计算.输入输出结果和结果存储: ②可编程性: ...

  4. python print格式化输出类型_第一讲:Python print() 格式化输出

    由于书本上少了这个知识,所以总结如下,各同学看完后完成对应的试题: 格式符为真实值预留位置,并控制显示的格式.格式符可以包含有一个类型码,用以控制显示的类型,如下: %s    字符串 (采用str( ...

  5. gitchat 会员值得买么_小米雷军亲自站台,599元的星特朗天文望远镜值得买么?...

    今天,通过小米雷军微博无意中翻到,雷总亲自站台了一款天文望远镜.微博原文为"买个望远镜,晚上拍月亮如何?"简简单单几个字,再配上小米有品在售的信息,另很多的粉丝也是不淡定了,对于很 ...

  6. python开发基础戴歆第四章_第一阶段:Python开发基础 day04 课后练习

    第一阶段:Python开发基础 day04 课后作业 1.简述python的五大数据类型的作用.定义方式.使用方法 数字类型 字符串类型 列表 字典 布尔型 答:数字类型分为整型(int)和浮点型(f ...

  7. python数据符号函数等一切皆对象_第一章:Python高级编程-Python一切皆对象

    第一章:Python高级编程-Python一切皆对象 Python3高级核心技术97讲 笔记 1. Python一切皆对象 1.1 函数和类也是对象,属于Python的一等公民 "" ...

  8. python能安装到d盘吗_第一课:python安装

    python是一门简洁.智能的语言,这是每个接触python的开发者对这门语言的第一印象.由于python具备这些特点,所以它同时也是一门对初学者绝对友好的语言.本期课程主要也是针对初学者,希望这篇课 ...

  9. python二级值得考吗_来自python二级考试的吐槽

    ennnnnn,终于盼到3月,终于开始了满怀期待的计算机等级考试,来,咱们点开试题看看里面有什么吧 ......................... en ..................... ...

最新文章

  1. Trip to Saint Petersburg CodeForces-1250 C
  2. 提高工作效率-shell操作快捷键
  3. 谈javascript变量声明
  4. 直接拿来用!最火的Android开源项目(完结篇)
  5. Java Review - 并发编程_伪共享
  6. Python实现字符串反转的6种方法
  7. 【大话数据结构算法】哈夫曼树
  8. txt mining 2(tf-idf)
  9. Design pattern
  10. Spring使用@PropertySource加载Properties配置文件
  11. NachOS简述和源文件
  12. Java中判断一个字符串全为数字和字母
  13. [你必须知道的.NET] 调试技巧 - DebuggerDisplayAttribute
  14. 前台之boostrap
  15. 练手|常见近30种NLP任务的练手项目
  16. 沧小海基于xilinx srio核的学习笔记之第三章 xilinx srio核介绍(三)核配置
  17. linux系统创建桌面快捷方式,linux创建桌面快捷方式
  18. VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧
  19. 视频:使用FFMpeg实现视频录制与压缩
  20. 小米10如何安装google play商店

热门文章

  1. 清理360浏览器、谷歌浏览器和国产统信UOS浏览器缓存操作方法
  2. Mac OS下的自带虚拟光驱
  3. [No000080]右键解锁增强Chrome插件开发,破除防复制
  4. 城市排水监测系统为城市排水防涝提质增效
  5. 什么是DNS云解析?-中科三方
  6. 交巡警求全市距离MATLAB程序,高教社杯全国大学生数学建模竞赛B题参考答案
  7. 全国大学生数学建模比赛2011B题交巡警服务平台的设置与调度论文与代码
  8. POJ 4741 Save Labman No.004
  9. VBS批量缩放Word图片
  10. patch文件的语法