selenium一个Python脚本实现网站更新监控

wylc123 1年前 ⋅ 1583 阅读

可以用于,监测领取评论金币,及时发现新文章发布等等方面。监测到对应状态,发邮箱,微信,QQ都会弹窗报告监测信息。

例子:

#!usr/bin/env python
# -*- coding: utf-8 -*-
#!文件类型: python
#!创建时间: 2020/10/22 9:12
#!作者: Bin
#!文件名称: AutoFriendLinks.py
#!简介:4414金币文章监控
# coding:utf8
# python3
import threading

import schedule
from selenium import webdriver
import time
import datetime
from selenium.webdriver.chrome.options import Options
import logging
import smtplib
from email.mime.text import MIMEText
from email.header import Header

logging.basicConfig(level=logging.INFO,#控制台打印的日志级别
                    filename='C:\links\logs\output.log',
                    filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
                    #a是追加模式,默认如果不写的话,就是追加模式
                    format=
                    '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
                    #日志格式
                    )
# 打开浏览器
logging.info(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "#############程序开始运行###########")
# 火狐浏览器
# options = webdriver.FirefoxOptions()
# options.set_headless()
# browser = webdriver.Firefox(options=options)
# 谷歌浏览器
chrome_options = Options()
# chrome_options.add_argument("--headless")
browser = webdriver.Chrome(executable_path='C:\\softs\\chrome\\chromedriver.exe',
                          options=chrome_options)

titles = []
def sendMail(msg):
    # 第三方 SMTP 服务
    mail_host = "smtp.qq.com"  # 设置服务器
    mail_user = "805969201@qq.com"  # 用户名
    mail_pass = "XXXXXXXXXXXXX"  # 口令odpfzmwxjhljgdfe

    sender = '805969201@qq.com'
    receivers = ['1370811553@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

    message = MIMEText('4414有金币领...'+msg, 'plain', 'utf-8')
    message['From'] = Header("4414", 'utf-8')
    message['To'] = Header("4414", 'utf-8')

    subject = '4414有金币领...'+msg
    message['Subject'] = Header(subject, 'utf-8')

    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
        smtpObj.login(mail_user, mail_pass)
        smtpObj.sendmail(sender, receivers, message.as_string())
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("Error: 无法发送邮件")

def job():
    #卢松松Alexa刷排名工具-淘博文
    global titles
    try:
        # 站长交流
        loginUrl = 'https://www.4414.cn/forum-76-1.html'
        browser.get(loginUrl)
        time.sleep(5)
        els = browser.find_elements_by_class_name("new")
        for el in els:
            title = el.text
            if '剩余' in title:
                title = title.split('-')[0]
                if title not in titles:
                    titles.append(title)
                    print(title)
                    sendMail("站长交流")
                    break
    except Exception as e:
        print("获取金币信息失败:"+str(e))
        browser.quit()

def run_threaded(job_func):
    job_thread = threading.Thread(target=job_func)
    job_thread.start()

schedule.every().minutes.do(run_threaded, job)
if __name__ == '__main__':
  while True:
    schedule.run_pending()
    time.sleep(1)

相关文章推荐

全部评论: 0

    我有话说: