日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python+selenium+apscheuler实现微信定时发信息

發(fā)布時(shí)間:2023/12/8 python 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python+selenium+apscheuler实现微信定时发信息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

在工作中每天下班前都需要在公司的報(bào)工系統(tǒng)中進(jìn)行工作日志的記錄。但是有很多同事常常都會(huì)忘記報(bào)工 。 這種現(xiàn)象也讓我們組長(zhǎng)感到頭疼,也每天在群里面催。就上述問題,我就想能不能每天定時(shí)的通知大家報(bào)工呢?也因?yàn)樽约赫趯W(xué)習(xí)python知識(shí),所以就用python+itchat+selenium+apscheduler來實(shí)現(xiàn)微信群的定時(shí)通知,來通知大家每天準(zhǔn)時(shí)報(bào)工。

準(zhǔn)備

由于使用的是linux系統(tǒng)來運(yùn)行python程序,所以這里先準(zhǔn)備好python在linux系統(tǒng)運(yùn)行的環(huán)境。
1. python安裝:

linux系統(tǒng)自帶python2.7,所以不需要另外安裝,如果需要使用python3以上的版本,再進(jìn)行升級(jí)。由于這次的程序在版本上沒有什么差異,所以無需再安裝。

2. 相應(yīng)的python庫安裝:

使用的python庫有:requests, selenuim, wxpy, apscheduler, itchat 由于在linux上沒有直接安裝這些包的工具,所以先在系統(tǒng)上安裝pip, 這樣使得我們 安裝python庫時(shí)更方便。下面簡(jiǎn)單描述安裝pip的過程:yum install -y epel-release #先安裝epel源 yum install -y python-pip # 接著安裝pip pip install --upgrade pip # 更新pip到最高版本安裝好pip后,以上的python,直接使用:pip insatll [對(duì)應(yīng)的庫名] 進(jìn)行安裝 如:pip install requests

3. phantomjs安裝
由于需要使用phantomjs進(jìn)行全屏截圖,所以要在linux系統(tǒng)進(jìn)行安裝

下載安裝包: 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驗(yàn)證是否成功 phantomjs -v

代碼實(shí)現(xiàn)

#!/usr/bin/env python # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') # 設(shè)置默認(rèn)編碼格式為'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 :緩存掃碼登錄的信息,短時(shí)間登錄不需要重新掃碼。 # console_qr=2 :在linux系統(tǒng)中顯示二維碼。 bot = Bot(cache_path=True, console_qr=2) # itchat.auto_login() # itchat.run()# 獲取金山詞霸每日一句,英文和翻譯 # 報(bào)工前發(fā)一波雞湯文。 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 '采集雞湯的程序掛啦!今天沒有雞湯,但還是要報(bào)工喲.^-^.'def screenshots():'''獲取jira上團(tuán)隊(duì)工作日志信息,保存為圖片,獲取失敗返回失敗信息: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 '進(jìn)入登錄頁面'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 '登錄成功'# 獲取當(dāng)前句柄current_handle = driver.current_window_handle# print(current_handle)# 登錄后,進(jìn)入工作日志界面driver.find_element_by_link_text('工作日志').click()# 獲取所有的句柄handles = driver.window_handles# print(handles)# 進(jìn)入第二個(gè)句柄,由于界面重新打開了另一個(gè)窗口,截圖內(nèi)容在新的窗口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 '截圖程序掛啦!今天沒圖看了,但還是要準(zhǔn)時(shí)報(bào)工喲!!'def sendMsg(data):'''發(fā)送群消息'''# 獲取需要發(fā)送信息的群group = bot.groups().search(u'test')[0]group.send(u'@報(bào)工一刻@') # 發(fā)送固定信息group.send(data) # 發(fā)送雞湯# 如果截圖失敗,發(fā)送固定的文字內(nèi)容。try:group.send_image('./test.png') # 發(fā)送圖片except:group.send(u'截圖程序掛啦!今天沒圖看了,但還是要準(zhǔn)時(shí)報(bào)工喲!!')group.send(u'沒報(bào)工的趕緊了喂!0..0!')def job():'''定時(shí)器執(zhí)行的函數(shù):return:'''# 獲取每日newsnews = get_news()# # 獲取截圖# msg = screenshots()# 發(fā)送信息sendMsg(news[0]+'\n'+news[1])# 創(chuàng)建調(diào)度器,周一到周五,每天17:50 發(fā)送報(bào)工信息 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() #保證上述代碼持續(xù)運(yùn)行

踩的坑

1.截圖后,圖片中的中文亂碼問題。
解決方法:

安裝相應(yīng)的字體 在centos中執(zhí)行:yum install bitmap-fonts bitmap-fonts-cjk 在ubuntu中執(zhí)行:sudo apt-get install xfonts-wqy

2.二維碼在終端顯示過大問題。

由于筆記本屏幕過小,登錄時(shí),顯示的二維碼過大,需要下拉,這時(shí)需要調(diào)整程序中 Bot類的參數(shù):console_qr = 1,像素單元格的大小。

人生苦短,我用python,學(xué)以致用,讓我們生活更美好!!!

總結(jié)

以上是生活随笔為你收集整理的python+selenium+apscheuler实现微信定时发信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。