当前位置: 首页 > news >正文

Python监控网站更新则推送到企业微信

import requests
from lxml import etree
import redis
r = redis.Redis(host="localhost", port=6379, db=0)


def get_page_content(url):
	# 获取指定网页中的标题和链接
    url_lists = []
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
    }
    response = requests.get(url, headers=headers, verify=False)
    if response.status_code == 200:
        html = etree.HTML(response.content.decode())
	    if html is not None:
	        a_urls = html.xpath("//a")
	        for a in a_urls:
	            title = "".join(a.xpath(".//text()")).strip()
                a_urls = a.xpath("./@href")
                if len(a_urls) > 0:
                    a_url = a_urls[0]
                    url_lists.append({"url": a_url, "title": title})
        return url_lists
	

# 监控函数
def monitor_website(url, interval=7200):
    while True:
        time.sleep(interval)  # 休眠指定的时间
        new_content = get_page_content(url) 
        changes = []
        if new_content:
            for item in new_content:
                # 检查 URL 是否已经存在
                if r.sismember("myset", item["url"]):
                    print("URL 已经存在,跳过")
                else:
                    # 添加到 Set 中并进行爬取
                    r.sadd("myset", item["url"])
                    changes.append(item)
            if len(changes) > 0:
                print(f"{url}网站已更新,新增数据为{changes}")
                bot(f"{url}网站已更新,新增数据为{changes}")


def bot(text):
    # 构建消息内容
    message_data = {
        "msgtype": "text",
        "text": {
            "content": text,
            "mentioned_list": ["@all"]
        }
    }
    robot_webhook = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key'
    # 发送请求
    response = requests.post(robot_webhook, headers={"Content-Type": "application/json"}, data=json.dumps(message_data))

    # 检查响应状态码
    if response.status_code == 200:
        print("消息发送成功")
    else:
        print(f"消息发送失败,状态码:{response.status_code}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/120394.html

相关文章:

  • 生产事故:Undertow容器的xnio线程引发CPU100%的方案验证后续(二)
  • Spring MVC与Spring Boot文件上传配置差异对比及文件上传关键类详细说明与对比
  • 【小沐杂货铺】基于Three.JS绘制太阳系Solar System(GIS 、WebGL、vue、react,提供全部源代码)
  • 谈Linux之磁盘管理——万字详解
  • CMDB平台(进阶篇):机房拓扑功能深度解析
  • css使用mix-blend-mode的值difference实现内容和父节点反色
  • redis的数据类型(1)
  • 12、主频和时钟配置实验
  • PhotoShop学习06
  • SpringBoot学生评奖评优管理系统的设计与实现
  • SpringBoot3笔记
  • C++中如何比较两个字符串的大小--compare()函数实现
  • 空对象模式(Null Object Pattern)在C#中的实现详解
  • 【区块链+ 人才服务】北京师范大学区块链底层链平台 | FISCO BCOS 应用案例
  • 2024年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析
  • PyTorch 学习笔记
  • C#实现实时读取西门子PLC数据,并存到Redis数据库中
  • Scala 异常处理
  • 如何高效生成达梦数据库测试数据?官方管理工具来了!
  • 蓝桥杯 2. 开赛主题曲【算法赛】
  • 基于AI设计开发出来的业务系统是什么样的?没有菜单?没有表格?
  • Winform零基础从入门到精通(13)——WinForm综合项目开发
  • 练习(含指针数组与数组指针的学习)
  • Unity 实现伤害跳字
  • 使用 node.js 和 MongoDB 编写一个简单的增删改接口 demo
  • 李建忠:智能体正将互联网从信息网络重构为行动网络
  • 【Oracle篇】跨字符集迁移:基于数据泵的ZHS16GBK转AL32UTF8全流程迁移
  • 【鸿蒙HarmonyOS】如何实现网络请求
  • 【区块链+ 人才服务】区块链虚拟仿真教学平台 | FISCO BCOS 应用案例
  • Kafka 和 Flink的讲解