在Python中监听网页通常涉及以下几个步骤:
安装必要的库
对于网页内容监控,可以使用`requests`库来发送HTTP请求。
对于解析网页内容,可以使用`BeautifulSoup`库。
对于发送邮件通知,可以使用`smtplib`库。
创建Web应用或脚本
使用Flask或Django等Web框架创建Web应用,并编写路由处理函数。
或者直接编写Python脚本,使用`requests`库获取网页内容。
处理HTTP请求
通过Flask的路由处理函数,根据请求类型(GET/POST)处理请求。
对于脚本,使用`requests.get`或`requests.post`发送请求并获取响应。
解析网页内容
使用`BeautifulSoup`解析HTML内容,提取所需信息。
监控网页变化
利用HTTP头部的`Last-Modified`属性来判断网页内容是否发生变化。
或者通过比较网页内容的哈希值来检测变化。
发送通知
如果检测到网页内容变化,可以使用`smtplib`发送邮件通知。
```python
import requests
from bs4 import BeautifulSoup
import hashlib
import time
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def get_hash(url):
response = requests.get(url)
content = response.text
return hashlib.md5(content.encode('utf-8')).hexdigest()
def monitor_website(url, old_hash, interval):
while True:
time.sleep(interval)
new_hash = get_hash(url)
if new_hash != old_hash:
send_email(f"Website '{url}' has changed.")
old_hash = new_hash
def send_email(message):
fromaddr = ''
toaddrs = ''
smtp_server = 'smtp.example.com'
smtp_port = 587
sender = ''
password = 'your_email_password'
message = MIMEText(message, 'plain', 'utf-8')
message['From'] = Header(sender)
message['To'] = Header(toaddrs)
message['Subject'] = Header("Website Change Alert", 'utf-8')
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(sender, password)
server.sendmail(fromaddr, toaddrs, message.as_string())
server.quit()
if __name__ == '__main__':
url_to_monitor = 'http://example.com'
old_hash = get_hash(url_to_monitor)
monitor_website(url_to_monitor, old_hash, 60) 每分钟检查一次
这个脚本将每分钟检查一次指定URL的内容是否发生变化,并在检测到变化时发送一封邮件通知。请根据实际需求修改URL、检查间隔以及邮件发送的相关信息。
如果您需要更复杂的监控功能,例如实时监控、日志记录等,可能需要使用更专业的网页监控工具或服务