【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

这篇具有很好参考价值的文章主要介绍了【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 一、概要
  • 二、效果演示
  • 三、代码讲解
    • 3.1 爬虫采集行政处罚数据
    • 3.2 存MySQL数据库
    • 3.3 发送告警邮件&微信通知
    • 3.4 定时机制
  • 四、总结

一、概要

您好!我是@马哥python说,一名10年程序猿。

我原创开发了一套定时自动化爬取方案,完整开发流程如下:

采集数据 -> 筛选数据 -> 存MySQL数据库 -> 发送邮件 -> 微信提醒 -> 定时执行

如果您现在苦于每天繁琐、重复的数据采集工作,可尝试套用该自动化方案,节省人力,降本增效!

二、效果演示

基于数据隐私保护,部分数据已脱敏。

图2.1 MySQL数据库结果(部分数据已脱敏):
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

图2.2 Excel结果(部分数据已脱敏):
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

图2.3 微信消息提醒:
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

图2.4 收件箱告警邮件:
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

图2.5 邮件正文内容(部分数据已脱敏):
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

以上。

三、代码讲解

3.1 爬虫采集行政处罚数据

爬取目标是某公示平台的行政处罚数据。

通过浏览器的开发者模式分析接口,页面显示数据与接口返回数据一致,故可通过爬取接口的方式采集。
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!
图3.1 开发者模式

首先,导入需要用到的库:

import requests  # 发送请求
import pandas as pd  # 存取csv
import os  # 判断本地文件
import random  # 随机
from time import sleep  # 等待时长,防止反爬
from sqlalchemy import create_engine  # 连接数据库
import json  # 转换数据格式

然后,定义请求头(真实地址已脱敏):

# 请求头
headers = {
	'Accept': 'application/json, text/javascript, */*; q=0.01',
	'Accept-Encoding': 'gzip, deflate, br',
	'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
	'Connection': 'keep-alive',
	'Content-Type': 'application/json;charset=UTF-8',
	'Cookie': '换成自己的cookie',
	'Host': 'xxx',
	'Origin': 'xxx',
	'Referer': 'xxx',
	'sec-ch-ua': '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
	'sec-ch-ua-mobile': '?0',
	'sec-ch-ua-platform': '"macOS"',
	'Sec-Fetch-Dest': 'empty',
	'Sec-Fetch-Mode': 'cors',
	'Sec-Fetch-Site': 'same-origin',
	'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
	'X-Requested-With': 'XMLHttpRequest'
}

定义请求参数,即开发者中的payload参数,不再展示。

发送post请求并接收返回数据:

# 发送post请求
r = requests.post(url, headers=headers, data=json.dumps(data))
# 查看响应码
print(r.status_code)
# json解析数据
resp_json = r.json()
data_list = resp_json['data']['list']

逐个解析返回数据,以"处罚金额"为例:

for data in data_list:
	# 处罚金额
	punish_amount = data['f_2022118615143']
	try:
		if float(punish_amount) >= threshold:  # 如果超过告警阈值,就存入数据
			punish_amount_list.append(punish_amount)
		else:  # 否则进入下一轮循环
			continue
	except:
		continue

这里解释一下:如果处罚金额超过事先设定好的阈值,则存入数据,否则不存,continue进入下一轮循环,由此达成告警的目的。

其他字段(案件名称、处罚人姓名、处罚日期、处罚机关等)同理,不再赘述代码。

最后是保存数据到csv文件:

# 保存数据到Dataframe
df = pd.DataFrame(
	{
		'页码': page,
		'案件名称': case_name_list,
		'处罚人姓名': punish_name_list,
		'处罚金额': punish_amount_list,
		'处罚日期': punish_time_list,
		'处罚机关': punish_org_list,
	}
)
# 保存到csv文件
df.to_csv(result_file, mode='a+', header=header, index=False, encoding='utf_8_sig')

数据存入csv效果,查看图2.2。

3.2 存MySQL数据库

如上所述,数据保存到csv文件作为临时存储,下面保存到MySQL数据库作为持久性存储。

我采用sqlalchemy和pandas的to_sql结合的方式,把csv数据快速导入MySQL数据库。

关键代码(真实信息已脱敏):

# 创建MySQL数据库连接
engine = create_engine('mysql+pymysql://用户名:密码@IP地址/数据库名')
# 读取csv数据
df_punish = pd.read_csv(result_file)
# 把csv数据导入MySQL数据库
df_punish.to_sql(name='table_name', con=engine, chunksize=1000, if_exists='replace', index=False)
print('导入数据库完成!')

这样的简单3行代码,即实现了csv数据导入MySQL数据库的目的。

注意,to_sql中的if_exists代表如果表中存在数据,那么replace覆盖原始数据,这样不会产生重复数据。当然,也可以加个ist_time插入时间的区分字段,这样可以把if_exists设置为append,保证每次爬取都留痕,你可以试试,我认为这样代码更完善、效果更好。

数据入库效果,查看图2.1。

3.3 发送告警邮件&微信通知

自动发送邮件,我采用zmail库实现。

关键代码(真实信息已脱敏):

def send_email(v_location, v_content):
    # 当前时间戳
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    # 设置邮件信息
    mail_content = {
        'subject': '税务行政处罚预警邮件 | {} | {}'.format(v_location, now),  # 邮件标题
        'content_text': '尊敬的管理员,您好!\n\n以下是【{}】税务行政处罚预警名单,请注意查收。\n\n'.format(
            v_location) + v_content  # 邮件内容
    }
    # 发件人的用户名和密码
    server = zmail.server('xxx@qq.com', 'xxx')  # 发件人
    # 发送邮件
    server.send_mail('xxx@qq.com', mail_content)  # 收件人
    print('邮件已发送完毕:', v_location)

注意,发件人的smtp服务必须开启,否则会邮件发送失败,如下:
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!
图3.2 邮箱开启smtp服务

邮件收到了,怎么实现的微信通知呢?秘密就是把微信的邮件功能打开,如下:
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!
图3.3 微信设置

微信:我 -> 设置 -> 通用 -> 辅助功能 -> QQ邮箱提醒 -> 开启功能

这样就能让微信收到消息提醒了,效果如图2.3所示。

多说一句,请勿尝试用itchat、wxpy等第三方库操作微信,微信官方已停用这类工具,且存在封号风险!不信你就逝世![手动狗头]

3.4 定时机制

定时执行也是采用简单粗暴的方式,直接os.system调用分别的py文件,死循环加sleep的方式:

while True:
    # 执行爬虫
    print(get_now(), '开始爬虫!')
    os.system('python 爬虫.py')
    print(get_now(), '爬取结束!')
    sleep(1)
    # 发邮件
    print(get_now(), '开始发预警邮件!')
    os.system('python 发预警邮件.py')
    print(get_now(), '结束发预警邮件!')
    sleep(1)
    # 等待时长60分钟
    print(get_now(), '开始等待60分钟..')
    sleep(3600)

这样,程序只要在后台一直运行就好了,每隔3600秒(即1小时)自动执行一次,可自定义设置间隔时长。

最终得到的效果就是每隔1小时微信收到一次消息通知,效果如图2.3所示。

四、总结

这套定时采集通知方案,全流程均由本人原创开发,可套用到类似业务需求上,其中部分环节可根据需要,扩展相关功能。请小伙伴们打开脑洞,码上开发!

如文中所说,部分信息涉及隐私保护,所以不提供完整代码,有类似需求的小伙伴可私信讨论。


我是@马哥python说,一名10年程序猿,持续分享Python干货中!文章来源地址https://www.toymoban.com/news/detail-746429.html

到了这里,关于【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信

    原文:https://automatetheboringstuff.com/2e/chapter18/ 检查和回复电子邮件是一项巨大的时间消耗。当然,你不能只写一个程序来帮你处理所有的邮件,因为每封邮件都需要它自己的回应。但是,一旦你知道如何编写可以发送和接收电子邮件的程序,你仍然可以自动完成大量与电子邮件

    2023年04月08日
    浏览(64)
  • Selenium+python怎么搭建自动化测试框架、执行自动化测试用例、生成自动化测试报告、发送测试报告邮件

    本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用。后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的学习和应用。 以下整理的只是书中自动化项目的知识内容,介绍怎么搭

    2024年02月05日
    浏览(67)
  • 使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等

    使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 此自动化脚本将帮助你使用 Python 中的 Android 调试桥 (ADB) 自动化你的智能手机。下面我将展示如何自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 您可以了解有关 ADB 的更多信息

    2024年01月23日
    浏览(46)
  • Python办公自动化 -- Python发送电子邮件和Outlook的集成

    Python办公⾃动化是利⽤Python编程语⾔来创建脚本和程序,以简化、加速和⾃动化⽇常办公任务和⼯作流程的过程。它基于Python的强⼤功能和丰富的第三⽅库,使得能够处理各种办公任务,如⽂档处理、数据分析、电⼦邮件管理、⽹络通信等等。 要使⽤Python发送电⼦邮件,可以

    2024年02月20日
    浏览(62)
  • 100天精通Python丨办公效率篇 —— 11、Python自动化操作 Email(发送邮件、收邮件、邮箱客户端)

    大家好,我是你们的好朋友西红柿!今天咱们聊一聊关于Python怎么操作邮件的问题。这可是十分有用的技能啊,偏偏很多小伙伴们并不知道,还得费尽周折地查找资料呢。幸好我这个聪明伶俐的小家伙会给你们支招,让你们又快又好地掌握这门技能! 首先,你要掌握以SMTP协

    2023年04月17日
    浏览(46)
  • 如何用python自动化微信小程序

    如何微信小程序自动化抢到跨境安 最近,接到一个这样的需求,最终交付的结果如下: 为了保护隐私,做了马赛克的处理。 程序提供一个界面,用于启动模拟器和实现启动抢票脚本 模拟器被封装程序的安装目录下 整个自动化的工程采用python实现: 核心的伪代码如下图所示:

    2024年02月13日
    浏览(50)
  • 微信小程序自动化实战(appium+python)

    本文主要讲解一下使用appium操作微信小程序的流程 要使用appium进行自动化第一步当然是配置好appium环境,这块我就不在这里细讲了,直接开始吧; ps:新版微信不再需要手动开启X5内核了 注意点: 要操作微信小程序,则需要先进入到微信小程序 要先查看微信webview使用谷歌驱

    2024年02月09日
    浏览(50)
  • python控制UI实现桌面微信自动化

    Hello,我是新星博主:小恒不会java 背景 使用  wxpy   或者   itchat   这种第三方库通过Python控制自己的微信号,实现很多自动化操作,用的是微信网页版接口,不过随着微信的发展(信息安全等方面愈加重要,这种不符合官方期望出现的东西,很容易就破产。也由于itchat在

    2024年04月27日
    浏览(53)
  • python微信PC端自动化-获取聊天记录

    目前已有许多微信客户端的自动化工具,可供我们自动获取聊天记录、发送消息等等。不过微信网页版现在已无法登录,因此一些python库如itchat、wxpy等已经无法使用了(基于网页)。 现在有大佬开发出了一个好玩的微信自动化python库——wxauto。wxauto基于uiautomation、win32gui等自

    2024年02月03日
    浏览(55)
  • 使用Python打造微信高效自动化操作教程

    在如今数字化时代,人们对于效率的追求越来越强烈,尤其是在工作和学习中。自动化操作成为了提高生产力的有效途径之一,而PyAutoGUI和Pyperclip作为Python中的两个强大库,为我们实现自动化操作提供了便利。本文将向大家介绍如何使用这两个库,并通过实际案例帮助读者轻

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包