一起创业网-为互联网创业者服务

网站数据监控程序怎么写

编写一个网站数据监控程序涉及多个步骤,包括环境准备、编写监控脚本、定时执行任务以及发送通知。以下是一个基本的网站数据监控程序的示例,使用Python编写,并包含了一些常见的功能,如定时检查网站状态、发送邮件通知等。

前期准备

安装所需的Python库

`requests`:用于发送HTTP请求。

`smtplib`:用于发送邮件通知。

`beautifulsoup4`:用于解析HTML内容(可选,如果需要监控网页内容变化)。

`schedule`:用于定时执行任务(可选,如果需要更灵活的调度)。

```bash

pip install requests beautifulsoup4 schedule

```

编写监控脚本

1. 检查网站状态的函数

```python

import requests

import time

from datetime import datetime

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

def check_website(url):

try:

response = requests.get(url, timeout=5)

if response.status_code == 200:

return {

'status': response.status_code,

'response_time': round(response.elapsed.total_seconds(), 2),

'is_ok': True

}

else:

return {

'status': response.status_code,

'response_time': round(response.elapsed.total_seconds(), 2),

'is_ok': False,

'error': response.text

}

except requests.RequestException as e:

return {

'status': None,

'response_time': None,

'is_ok': False,

'error': str(e)

}

```

2. 获取网页内容

```python

def get_webpage_content(url):

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}

response = requests.get(url, headers=headers)

return response.text

```

3. 解析网页内容(可选)

```python

from bs4 import BeautifulSoup

def extract_info(html_content):

soup = BeautifulSoup(html_content, 'html.parser')

提取所需信息,例如标题、描述等

title = soup.title.string if soup.title else "No title found"

return {'title': title}

```

4. 发送邮件通知

```python

def send_email_notification(url, status, response_time, error=None):

sender_email = "your_email@example.com"

receiver_email = "admin@example.com"

password = "your_email_password"

msg = MIMEMultipart()

msg['From'] = sender_email

msg['To'] = receiver_email

msg['Subject'] = f"Website Monitoring Alert: {url}"

body = f"URL: {url}\nStatus: {status}\nResponse Time: {response_time} seconds"

if error:

body += f"\nError: {error}"

msg.attach(MIMEText(body, 'plain'))

server = smtplib.SMTP('smtp.example.com', 587)

server.starttls()

server.login(sender_email, password)

server.sendmail(sender_email, receiver_email, msg.as_string())

server.quit()

```

5. 定时执行任务

```python

import schedule

import time

def monitor_website(url, interval=60):

while True:

result = check_website(url)

if not result['is_ok']:

send_email_notification(url, result['status'], result['response_time'], result.get('error', 'Unknown error'))

time.sleep(interval)

示例调用

monitor_website("https://www.example.com", 60) 每分钟检查一次

```

运行监控程序

将上述代码保存为一个Python文件(例如`website_monitor.py`),然后在终端或命令行中运行: