背景

在工作中每天下班前都需要在公司的报工系统中进行工作日志的记录。但是有很多同事常常都会忘记报工 。 这种现象也让我们组长感到头疼,也每天在群里面催。就上述问题,我就想能不能每天定时的通知大家报工呢?也因为自己正在学习python知识,所以就用python+itchat+selenium+apscheduler来实现微信群的定时通知,来通知大家每天准时报工。

准备

由于使用的是linux系统来运行python程序,所以这里先准备好python在linux系统运行的环境。
1. python安装:

 linux系统自带python2.7,所以不需要另外安装,如果需要使用python3以上的版本,再进行升级。由于这次的程序在版本上没有什么差异,所以无需再安装。

2. 相应的python库安装:

使用的python库有:requests, selenuim, wxpy, apscheduler, itchat
由于在linux上没有直接安装这些包的工具,所以先在系统上安装pip, 这样使得我们
安装python库时更方便。下面简单描述安装pip的过程:yum install -y  epel-release #先安装epel源
yum install -y python-pip  # 接着安装pip
pip install --upgrade pip  # 更新pip到最高版本安装好pip后,以上的python,直接使用:pip insatll  [对应的库名]  进行安装
如:pip install  requests

3. phantomjs安装
由于需要使用phantomjs进行全屏截图,所以要在linux系统进行安装

下载安装包:
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2解压缩:
tar -xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2建立软链接:
mv /phantomjs-2.1.1-liunx-x86_64.tar.bz2 /phantomjs  重命名
ln -s /usr/local/phantomjs/bin/phantomjs /usr/bin/安装依赖软件:
yum -y install fontconfig验证是否成功
phantomjs -v

代码实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8') # 设置默认编码格式为'utf-8'
from selenium import webdriver as wb
import time
from wxpy import *
from apscheduler.schedulers.blocking import BlockingScheduler
import requests# 登录客户端,这里没有直接使用itchat,而是使用了wxpy,原理差不多。
# cache_path=True :缓存扫码登录的信息,短时间登录不需要重新扫码。
# console_qr=2 :在linux系统中显示二维码。
bot = Bot(cache_path=True, console_qr=2)
# itchat.auto_login()
# itchat.run()# 获取金山词霸每日一句,英文和翻译
# 报工前发一波鸡汤文。
def get_news():try:url = "http://open.iciba.com/dsapi"r = requests.get(url)contents = r.json()['content']translation = r.json()['translation']return contents, translationexcept Exception as e:return '采集鸡汤的程序挂啦!今天没有鸡汤,但还是要报工哟.^-^.'def screenshots():'''获取jira上团队工作日志信息,保存为图片,获取失败返回失败信息:return:'''try:url = 'http://xxx.xxx.xxx.xxx:9990/secure/deskDomainAction!mainpage.jspa'# drive = wb.Chrome()driver = wb.PhantomJS()driver.implicitly_wait(30)driver.get(url)print '进入登录页面'user_name = driver.find_element_by_id('login-form-username')user_name.clear()user_name.send_keys('xxx')pwd = driver.find_element_by_id('login-form-password')pwd.clear()pwd.send_keys('xxxx')submit = driver.find_element_by_id('login-form-submit')submit.click()print '登录成功'# 获取当前句柄current_handle = driver.current_window_handle# print(current_handle)# 登录后,进入工作日志界面driver.find_element_by_link_text('工作日志').click()# 获取所有的句柄handles = driver.window_handles# print(handles)# 进入第二个句柄,由于界面重新打开了另一个窗口,截图内容在新的窗口driver.switch_to_window(handles[1])# 保存截图driver.get_screenshot_as_file('./test.png')print '截图成功!'time.sleep(2)driver.quit()except Exception as e:print u'获取工作日志图片失败!'driver.quit()return '截图程序挂啦!今天没图看了,但还是要准时报工哟!!'def sendMsg(data):'''发送群消息'''# 获取需要发送信息的群group = bot.groups().search(u'test')[0]group.send(u'@报工一刻@') # 发送固定信息group.send(data)  # 发送鸡汤# 如果截图失败,发送固定的文字内容。try:group.send_image('./test.png')  # 发送图片except:group.send(u'截图程序挂啦!今天没图看了,但还是要准时报工哟!!')group.send(u'没报工的赶紧了喂!0..0!')def job():'''定时器执行的函数:return:'''# 获取每日newsnews = get_news()# # 获取截图# msg = screenshots()# 发送信息sendMsg(news[0]+'\n'+news[1])# 创建调度器,周一到周五,每天17:50 发送报工信息
scheduler = BlockingScheduler()
# scheduler.add_job(job, 'cron', day_of_week='1-5', hour=17, minute=50)
scheduler.add_job(job, 'interval', seconds=30)
scheduler.start()bot.join() #保证上述代码持续运行

踩的坑

1.截图后,图片中的中文乱码问题。
解决方法:

安装相应的字体
在centos中执行:yum install bitmap-fonts bitmap-fonts-cjk
在ubuntu中执行:sudo apt-get install xfonts-wqy

2.二维码在终端显示过大问题。

由于笔记本屏幕过小,登录时,显示的二维码过大,需要下拉,这时需要调整程序中
Bot类的参数:console_qr = 1,像素单元格的大小。

人生苦短,我用python,学以致用,让我们生活更美好!!!

python+selenium+apscheuler实现微信定时发信息相关推荐

  1. python 操作微信定时发信息

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Jul 6 11:52:20 2020 ...

  2. python 定时发微信,python 操作微信定时发信息

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Jul 6 11:52:20 2020 ...

  3. 另外一个给微信企业号发信息的python脚本

    http://chenx1242.blog.51cto.com/10430133/1954634 文章里面有一个python脚本可以用来给微信企业号发信息,如果你不喜欢那篇文章里面"titl ...

  4. python微信定时发消息_python实现给微信指定好友定时发送消息

    微信如何在设定时间自动发送信息给指定好友 微信没有定时发送信息的功能,但是可以借助小程序. 世界上最遥远的距离,不是生与死,而是小编就站在你面前,你却不知道小编爱你. 打开微信之后在搜索小程序中输入蜗 ...

  5. 利用python itchat给女朋友定时发信息

    利用itchat给女朋友定时发信息 涉及到的技术有itchat,redis,mysql,最主要的还是mysql咯,当然咯,这么多东西,我就只介绍我代码需要用到的,其他的,如果需要了解的话,就需要看参考 ...

  6. 微信定时发情话--python小程序

    微信定时发情话--python小程序 话不多说直接上程序 主要的东西 效果 参考 话不多说直接上程序 import requests from wxpy import * from bs4 impor ...

  7. python+selenium爬取智联招聘信息

    python+selenium爬取智联招聘信息 需求 准备 代码 结果 需求 老板给了我一份公司名单(大概几百家如下图),让我到网上看看这些公司分别在招聘哪些岗位,通过分析他们的招聘需求大致能推断出我 ...

  8. python微信定时发消息_Python开发企业微信机器人每天定时发消息实例

    由于办公需要"每天定时推送某消息用来提醒群里面所有人",有同事提议用企业微信自带的机器人来实现此功能.我觉得企业微信的这个工具还不错,具体使用方法我来一一讲述. 企业微信API 企 ...

  9. linux定时发信息到微信群聊,Wechat-Timed-Message

    向微信推送定时消息 (English version is down below) 好用记得收藏(右上角加星★Star)哦! Docker镜像支持在amd64.arm64.arm32v7.arm32v ...

最新文章

  1. class类文件结构
  2. Recovery Rate违约后可回收比率
  3. select报错 spark_spark-sql master on yarn 模式运行 select count(*) 报错日志
  4. laravel自动建mysql索引_让 Laravel 优雅地创建 MySQL 全文索引
  5. 怎么学好python leetcode的题目太难了_为什么leetcode中的python解法过于pythonic,而忽略了算法题主要关注的复杂度问题?...
  6. 最近学习mpvue框架开发微信小程序,把wepy框架的项目实现到mpvue中,知道其中的一些两者之间的区别...
  7. react周期函数介绍
  8. 用L2TP与OpenSwan构建IPSec ×××(使用X.509证书认证)
  9. FPGA图像音频通信接口:VGA
  10. 相见恨晚 linux下的c++filt 命令
  11. English语法_形容词-排序
  12. git冲突解决和放弃本地操作
  13. 微信小程序webview内嵌h5页面
  14. 亲测好用的屏幕录制软件:camtasia2021 mac中文版
  15. 万字长文带你 搞定 linux BT 宝塔面板 之外网上快速搭建苹果CMS电影网站
  16. Spring中的一些常用注解
  17. Centos安装SVN服务端
  18. Java中使用zt-exec执行多shell/Linux命令,执行日志实时推送前端
  19. STM32F767 Timer定时器与Usart串口综合实训
  20. 智能图像识别产品开发流程 OCR 图像识别

热门文章

  1. LeetCode每日一题-495.提莫攻击
  2. 一个列子演示java中软引用的回收时机
  3. 问下这个审核被拒怎么解决呢?——酷课堂iOS交流群问答整理(201806期)
  4. eclipse 左侧导航栏不见怎么办
  5. 2022美亚杯电子数据取证大赛-个人赛
  6. 辽宁启迪电商:拼多多店铺推广收费标准是什么?
  7. 【数据库】python连接数据库(保姆式服务,一口一口喂啊歪)
  8. greasemonkey_在Firefox中更改或设置Greasemonkey脚本编辑器
  9. VBox安装xp虚拟机无法上网
  10. ueditor统计字数中文_UEditor编辑器 字符数统计和字符数限制 问题