概述
python爬虫实现对年级网站通知的自动化推送
- 前言
- 原理
- 函数库
- 安装方法
- 函数
- 源码
- 云服务器定时计划
- 效果
前言
这个代码项目的诞生来源于我自己的懒惰。我们学院有自己的年级网站(以下简称级网),因此很多重要通知会在网站发布。虽然作为网站维护者的我因为日常 学习生活事情繁琐,加上级网通知很多时候都是不定时不定量的发,我也因为自己懒于看级网通知导致经常错过和自己有关的通知。因此产生了想写一个爬虫来替我完成看级网有没有新的通知并提醒我的任务。
原理
利用requests库对指定网站发起请求,并加载资源到本地。利用BeautifulSoup库对加载的资源进行检索、切片、贴合等操作。首先找到对应的文章标题标签,并获取链接和标签内容。再找到文章发布时间的标签并和标题绑定。判断发布时间和当前日期是否一致,一致则向微信和邮箱推送内容。不一致则不进行任何操作。
函数库
import time
import datetime
import urllib.request
import requests
import json
from bs4 import BeautifulSoup
import smtplib
from email import (header)
from email.mime import (text, multipart)
安装方法
pip install --upgrade pip
pip install beautifulsoup4
pip install requests
函数
1.模拟浏览器向网站发出请求并加载资源到本地
def getTitle (url):
headers = ('User-Agent',"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
html = urllib.request.urlopen(url).read().decode('utf-8', 'ignore')
bs = BeautifulSoup(html,'html.parser')
Title_links = bs.select('特定标签')
return Title_links
2.获取当前日期
def getNowDate():
now_time = datetime.datetime.now()
yes_time = now_time+datetime.timedelta(days=-3)
current_time = yes_time.strftime('%Y-%m-%d')
return current_time
3.对所筛选出的数据进行整合
for link in linklist_Title:
contents.append(link.text.strip())
links.append(link.get('href'))
for date in linklist_Date:
dates.append(date.text.strip())
#获取指定日期的文章信息
for date,text, link, in zip(dates, contents, links):
data = date+' '+text+':http://xxx.xxx.com'+link
if date == Now_Date:
send_data = send_data+data+'nn'
4.群发邮件
def sender_mail():
smtp_Obj = smtplib.SMTP_SSL('smtp.qq.com',465) # 连接qq邮箱SMTP服务器,端口是465
sender_addrs = 'xxx@foxmail.com' # 发件人邮箱账号
password = "uaxxxxxxxxxxxge" # 发件人邮箱密码 即配置生成的授权码
smtp_Obj.login(sender_addrs, password)
receiver_addrs = ['yyy@foxmail.com','zzz@foxmail.com'] #群发的收件人
for email_addrs in receiver_addrs:
try:
msg = multipart.MIMEMultipart()
msg['From'] = "InetGeek"
msg['To'] = email_addrs
msg['subject'] = header.Header('今日级网更新通知', 'utf-8')
msg.attach(text.MIMEText('今日:['+getNowDate()+']级网最新通知如下:nn'+send_data, 'plain', 'utf-8')) #邮件内容
smtp_Obj.sendmail(sender_addrs, email_addrs, msg.as_string()) # 发件人邮箱账号、收件人邮箱账号、发送邮件
print('成功发送给%s' % ( email_addrs))
except Exception as e:
continue
smtp_Obj.quit() #退出
5.用json格式向push+推送文章
token = '4bxxxxxxxxxxxxxxxxxxxxxxx5'
title= '今日级网更新通知'
content = send_data
url = 'http://pushplus.hxtrip.com/send'
data = {
"token":token,
"title":title,
"content":content
}
body=json.dumps(data).encode(encoding='UTF-8')
headers = {'Content-Type':'application/json'}
requests.post(url,data=body,headers=headers)
源码
gihub仓库:InetGeek
云服务器定时计划
定时执行shell指令
/usr/bin/python /www/server/panel/class/Notice_Spider.py
博客:Digran’s Blog
效果
1.微信端
2.QQ邮件端
最后
以上就是安静大叔为你收集整理的python爬虫实现对年级网站通知的自动化推送的全部内容,希望文章能够帮你解决python爬虫实现对年级网站通知的自动化推送所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复