通過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腳本?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章