通过Python3对网页数据异常QQ定时提醒

前言:

       需要定期监控网页数据是否异常(但是网页数据是动态的,不能直接采用urllib模块来获取网页信息),想法是将数据抓取分析后,通过定时发送QQ消息来提醒数据情况。较为粗糙,不足之处,还请不吝赐教!

1.环境

  •    win10(64位)
  •    Anaconda(1.9.2)
  •    Python3.7

2.安装包

  • pywin32(安装方法参考:Python3 pywin32模块安装
  • re
  • selenium(一些文章说可直接pip install ,但不清楚什么原因,我的不可以,所以直接在Anaconda上安装)
  • time
  • sys
from selenium import webdriver
from bs4 import BeautifulSoup
import re
import win32gui
import win32con
import win32clipboard as w
import time
import sys

3.抓取网页,并处理

网页解析(参考:在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫

#网页解析
browser = webdriver.Chrome()
browser.get("***")#此处填写对应网址
time.sleep(1)#个人因为browser.get()获取网页时打开需要时间,否则会出现无法获取数据的情况
bs = BeautifulSoup(browser.page_source, "html.parser")
str_bs = str(bs)#将网页解析数据转成str


#数据处理,根据实际情况进行处理
content_pat = '***'#此处是正则表达式
content = re.compile(content_pat, re.S).findall(str_bs)
print(content)
n = 4
content_list = [content[i:i+n] for i in range(0, len(content), n)]#根据获取的数据进行切分,这里应当根据实际情况进行处理
        
cont = []       
for i in content_list:
    if(i[2] == '***'):
        cont.append(i[1]+'数据报错')
    elif(i[3] == '***'):
        cont.append(i[1]+'数据报错')
    else:
        cont.append('一切正常')

4.发送QQ消息

来源于:使用python发送qq消息

注:发送qq消息要求已经登陆qq,而且qq的窗口是独立的,现在新版的qq一般都是将所有的聊天窗口聚合在一起,因此要设置将qq窗口分离,或者将需要发送消息的那个窗口单独分离出来。

def getText():
    """获取剪贴板文本"""
    w.OpenClipboard()
    d = w.GetClipboardData(win32con.CF_UNICODETEXT)
    w.CloseClipboard()
    return d

def setText(aString):
    """设置剪贴板文本"""
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
    w.CloseClipboard()

def send_qq(to_who, msg):
    """发送qq消息
    to_who:qq消息接收人
    msg:需要发送的消息
    """
    # 将消息写到剪贴板
    setText(msg)
    # 获取qq窗口句柄
    qq = win32gui.FindWindow(None, to_who)
    # 投递剪贴板消息到QQ窗体
    win32gui.SendMessage(qq, 258, 22, 2080193)
    win32gui.SendMessage(qq, 770, 0, 0)
    # 模拟按下回车键
    win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    win32gui.SendMessage(qq, win32con.WM_KEYUP, win32con.VK_RETURN, 0)


# 测试
to_who='***'#此处发送给谁就填写谁的id
msg= str(cont)
send_qq(to_who, msg)

#关闭
sys.exit(0)

5.终端调用python脚本

由于我使用的Anaconda,因此在调用时出现问题,这里参考了一篇Windows如何用Anaconda运行python脚本?

写了一个bat文件:

CALL   C:\Users\***\Anaconda3\Scripts\activate.bat C:\Users\***\Anaconda3
cd C:\Users\**
python webmonitor.py
@exit

这样就把cmd调用webmonitor.py文件,改变成直接调用该.bat文件即可。 

6.设置定时执行

如果不会的可以参考:Windows定时运行python程序

7.执行结果

 8.参考

  1. Python3 pywin32模块安装
  2. 在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫
  3. 使用python发送qq消息
  4. Windows定时运行python程序
  5. Windows如何用Anaconda运行python脚本?
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值