首页 论坛 置顶 使用Python构建自动网站监控工具

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 作者
    帖子
  • #16059

     

    想知道网站何时发生变化?让Python为你处理!

    你是否曾经每天手动检查一个网站,只是为了看看是否有变化?

    也许你在:

    ✅ 等待某个产品重新上架

    ✅ 跟踪某个职位列表的更新

    ✅ 关注某个商品的降价情况

    如果你可以停止手动检查,让Python在网站发生变化时自动提醒你,那该多好?

    这正是我们今天要构建的内容:

    一个免提网站监控器,可以检查网页并在发生变化时通知您。🚀


    步骤 1:安装所需的库

    在我们开始之前,请安装以下库:

    pip install requests beautifulsoup4
    • requests → 获取网页
    • BeautifulSoup → 提取并比较页面内容

    步骤 2:获取网页内容

    首先,我们需要加载网页并存储其内容:

    import requests
    
    URL = "https://example.com"  # 你想要监控的网站
    
    response = requests.get(URL)  # 获取网页
    html_content = response.text  # 存储 HTML
    

    这将整个页面作为原始 HTML 抓取。


    步骤 3:提取仅重要部分

    网页上有很多我们不需要的额外内容。我们使用 BeautifulSoup 来提取我们关心的部分:

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(html_content, "html.parser")
    
    # 找到页面中变化的部分(例如,价格、库存、文本)
    
    target_element = soup.find("div", class_="price")  # 根据你的网站进行更改
    
    if target_element:
        current_value = target_element.text.strip()
    else:
        current_value = "未找到"
    

    👉 将 "div", class_="price" 替换为您要监控的元素的实际 HTML 标签和类


    步骤 4:保存初始值

    为了检查变化,我们需要 记住之前的值。让我们保存它:

    with open("previous_value.txt", "w") as file:
        file.write(current_value)
    

     


    步骤 5:比较并发送警报

    现在我们检查值是否改变,如果改变则通知您:

    import time
    
    while True:
        response = requests.get(URL)
     soup = BeautifulSoup(response.text, "html.parser")
    
    new_value = soup.find("div", class_="price").text.strip()
    
    # 从文件中读取之前的值
     with open("previous_value.txt", "r") as file:
    

    previous_value = file.read().strip()

    if new_value != previous_value:
    print(f🔔 检测到变化!新值为: {new_value})

    # 更新存储的值
    with open(previous_value.txt, w) as file:
    file.write(new_value)

    
    time.sleep(60)  # 等待60秒后再检查
    

    🚀 现在,Python为您监控网站!

    • 如果没有变化,它会持续检查。
    • 如果文本发生变化,它会在终端提醒您

    步骤6:在您的手机或电子邮件上接收通知

    终端提醒很好,但为什么不接收短信或电子邮件呢?

    要接收电子邮件通知:

    import smtplib
    
    def send_email(message):
        sender_email = "your_email@gmail.com"
        receiver_email = "your_email@gmail.com"
        password = "your_app_password"
    
        with smtplib.SMTP("smtp.gmail.com", 587) as server:
            server.starttls()
            server.login(sender_email, password)
    
    
    server.sendmail(sender_email, receiver_email, f"主题:网站更新nn{message}")
    
    send_email(f"网站已更改!新值: {new_value}")
    

    📩 现在每当有变化时,您会收到电子邮件通知!


    接下来是什么?提升您的Python技能

    这仅仅是个开始!您可以:

    ✅ 监控多个网站

    ✅ 通过短信、Telegram或Slack发送警报

    ✅ 在网站更新时自动执行操作

    现在去自动化一些有用的东西吧! 🚀

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 哎呀,回复话题必需登录。