请问各位类似 ChatGPT Release Notes 这样简单的页面如何订阅更新?

有哪些比较简单的技术手段或者付费方案?

通用方法

如果最后要以 RSS 形式输出的话,可以试试 RSS Everything 这个服务,类似以前的 Feed43(已停止服务)。

一般情况下,它可以为没有 RSS 的网站制作 RSS 订阅链接。


利用 Python 的 Beautiful Soup 包

不过我看了下你提供的网页,用 RSS Everything 第一步就获取不到正文内容,只能拿到网页结构。说明这个网页是用 JS 获取内容的方法,还可能做了一些反爬的策略。所以这个网页只是内容简单,获取它并不简单 :rofl:

所以这个问题如果让我来解决的话,我可能就考虑直接写段 Python 扔服务器后台跑着了。

我找 ChatGPT 写了段 Python,可以实现每小时检测网页变化。

安装依赖:

pip install beautifulsoup4

代码:

import requests
import time
import hashlib
import json
from bs4 import BeautifulSoup


def get_article_content(url):
    headers = {'User-Agent': 'Mozilla/5.0'}
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        soup = BeautifulSoup(response.text, 'html.parser')
        article = soup.find(class_="article")  # 查找 class="article" 的元素
        return article.text.strip() if article else ""
    except requests.RequestException as e:
        print(f"请求错误: {e}")
        return ""


def compute_hash(content):
    return hashlib.sha256(content.encode()).hexdigest()


def send_notification_to_lark(webhook_url, message):
    headers = {'Content-Type': 'application/json'}
    payload = {
        "title": "网页内容变化通知",
        "text": message
    }
    try:
        response = requests.post(
            webhook_url, headers=headers, data=json.dumps(payload))
        response.raise_for_status()
        print("成功发送通知到 Lark")
    except requests.RequestException as e:
        print(f"发送通知错误: {e}")


url = "https://help.openai.com/en/articles/6825453-chatgpt-release-notes"
lark_webhook_url = "你的 Lark Webhook URL"

last_hash = None
check_interval = 60*60 #频率可以自己调整,这里是60分钟

while True:
    content = get_article_content(url)
    if content:
        print(content)  # 打印当前获取的内容
        current_hash = compute_hash(content)
        if current_hash != last_hash:
            print("检测到文章内容变化!")
            send_notification_to_lark(lark_webhook_url, "ChatGPT Release Notes 页面有更新。")
            last_hash = current_hash
        else:
            print("文章内容未变化。")
    else:
        print("未找到文章内容或无法获取网页。")

    time.sleep(check_interval)

只要填写一个 Lark 的 Webhook 链接,然后在一台机器上让这段代码持续运行即可。

这个解决方案可能过于程序员了一点,回头我再找找有没有更好的办法。 :joy:

1 Like

ceeb653ely1g2e3wjtga1g209g08zh9y

:cool::sunglasses:

方案简洁优雅,还学习到了新知识 :blush:

1 Like