前言
在日常学习和工作中,及时获取学校教务处的最新通知非常重要。本文介绍了如何使用Python编写一个自动化脚本,该脚本能够爬取教务处网站的最新通知公告,并通过邮件发送给指定的收件人。这样,我们就可以在第一时间内获取到重要信息,不错过任何关键的通知或更新。
欢迎来给俺个星星✨!ForrestGump618/Notification_NMU。
技术栈
- Python:编程语言
- requests:HTTP库,用于发送网络请求
- BeautifulSoup:HTML解析库,用于解析网页内容
- smtplib、email.mime.text、email.mime.multipart:邮件发送库,用于构建和发送邮件
主要功能及实现步骤
1. 网页内容爬取(scrape_website
函数)
首先,定义scrape_website(url)
函数,用于爬取教务处网站的通知公告列表。通过requests库发送GET请求获取网页内容,然后使用BeautifulSoup解析HTML,提取出通知公告的标题、链接和发布日期,最后将这些信息存储在列表中返回。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def scrape_website(url): base_url = "https://jwc.njmu.edu.cn" page = requests.get(url) soup = BeautifulSoup(page.content, 'html.parser') items = soup.select('.news_list li') news_list = [] for item in items: news = {} news_anchor = item.select_one('.news_title a') news['title'] = news_anchor.get('title').strip() news['link'] = base_url + news_anchor.get('href') news['date'] = item.select_one('.news_meta').text.strip() news_list.append(news) return news_list
|
2. 获取通知详细内容(scrape_news_details
函数)
定义scrape_news_details(news_link)
函数,用于爬取每条通知的详细内容。同样使用requests和BeautifulSoup获取并解析页面,提取通知的正文内容,并生成一个简短的摘要返回。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def scrape_news_details(news_link): page = requests.get(news_link) soup = BeautifulSoup(page.content, 'html.parser') content_element = soup.select_one('.wp_articlecontent') if content_element: content_text = content_element.get_text(separator=" ", strip=True) length = len(content_text) if length > 200: summary = content_text[:200] + " ......" else: summary = content_text return summary else: return "No content found."
|
3. 邮件发送(send_email
函数)
定义send_email(subject, content, to_email)
函数,使用smtplib和email.mime相关模块构建并发送邮件。这里需要预先设置发件人邮箱、密码以及SMTP服务器信息。
1 2 3 4 5 6 7 8 9 10 11 12
| def send_email(subject, content, to_email): sender_email = "xxx" password = "xxx" msg = MIMEMultipart() msg['Subject'] = subject msg['From'] = sender_email msg['To'] = to_email msg.attach(MIMEText(content, 'html')) server = smtplib.SMTP_SSL('smtp.qq.com', 465) server.login(sender_email, password) server.send_message(msg) server.quit()
|
4. 主程序流程
在if __name__ == "__main__":
块中,脚本首先调用scrape_website
函数获取最新的通知列表,然后为每条通知生成HTML格式的邮件内容。如果当日有更新,则通过send_email
函数将这些通知以邮件的形式发送给预设的收件人列表。
1 2 3 4 5 6 7 8 9 10
| if __name__ == "__main__": email_list = ["xxx"] url = 'https://jwc.njmu.edu.cn/842/list.htm' news_list = scrape_website(url) for email in email_list: if str(datetime.date.today()) in content_mail: send_email("今日有更新|教务处通知公告", content_mail, email) else: send_email("教务处通知公告", content_mail, email)
|
效果呈现如下:

效果呈现
5. 自动部署
利用批处理文件部署:
1 2 3 4
| @echo off C: cd C:\Users\Zhuang Qingyuan\Desktop\Notification start python spyder.py
|
保存为BAT文件后,放到电脑的开始-菜单/启动文件夹下,即可开机启动。
使用指南
要使用这个脚本,你需要:
- 安装Python及相关库(requests, BeautifulSoup4)。
- 替换
sender_email
、password
和email_list
中的占位符为实际的邮箱地址和密码。
- 运行脚本。脚本会自动检查教务处网站的更新,并将最新的通知发送到指定的邮箱中。
通过以上步骤,我们可以构建一个自动化的信息获取和提醒系统,帮助用户及时获取重要的教务通知,有效提升信息获取的效率和时效性。
v1.5.2