一、制作背景
如果要应聘某个单位,但是不知道这个单位什么时候发布招聘信息,总不能天天上官网去看吧,对于我这样孤僻的性格,消息闭塞,很有可能错过重要的招聘信息。
因此,我需要一个程序可以自动爬取网站的消息栏,如果发现有自己关注的信息,则发一封邮件给自己。
例如海盐商贸学校发布了一条招聘计算机教师的通知,我需要第一时间得到通知。
二、代码分享
import requests
import smtplib
import schedule
import time,os
from bs4 import BeautifulSoup
from email.mime.text import MIMEText
from email.header import Header
def account_save(keyword,qqmail):
#----保存用户邮箱和关键词信息----#
with open(account_path,'w') as f:
f.writelines([keyword+'\n',qqmail])
f.close()
def account_load():
#----读取邮箱和关键词信息----#
with open(account_path,'r') as f:
f_content=f.readlines()
return f_content[0][:-1],f_content[1]
def YanGongBu_spider(keyword):
#----爬取研工部通知栏前三项----#
headers={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
url='http://yjsb.zjnu.edu.cn/'
res=requests.get(url,headers=headers)
soup=BeautifulSoup(res.text,'html.parser')
titles=soup.find_all('span',class_="meta-title")
for title in titles[10:13]:
if keyword in title.text:
send_email(title.text,qqmail)
def send_email(title,qqmail):
#----使用710464440代发邮件----#
account=qqmail
password='这里填写邮箱密码'
reveiver='710464440@qq.com'
mailhost='smtp.qq.com'
qqmail=smtplib.SMTP()
qqmail.connect(mailhost,25)
qqmail.login(account,password)
content=title
massage=MIMEText(content,"plain","utf-8")
subject='研工部通知'
massage['Subject']=Header(subject,'utf-8')
try:
qqmail.sendmail(account,reveiver,massage.as_string())
print('邮件发送成功')
except:
print('邮件发送失败')
qqmail.quit()
if __name__=='__main__':
base_dir = os.path.dirname(__file__) #获取当前文件夹的绝对路径
account_path=base_dir+"/account.txt"
print(account_path)
if not os.path.exists(account_path):
keyword=input('请输入你想关注的内容的关键词(例如:招聘):')
qqmail=input("请输入你的qq邮箱地址(例如:715555555@qq.com):")
account_save(keyword,qqmail)
else:
keyword,qqmail=account_load()
YanGongBu_spider(keyword)
input('按任意键退出程序')
#这段代码用于挂远程服务器
#schedule.every().day.at('17:30').do(YanGongBu_spider)
#while True:
#schedule.run_pending()
#time.sleep(1)
三、使用小tip
如果是本地使用的话,利用windows的任务计划程序,每天定时运行程序,如果那个时间电脑没开,程序则不会运行,而且如果在玩游戏,可能会被黑窗口弹一下,比较影响体验。
因此,我们需要将代码挂在远程的服务器上,服务器24小时运行,完美解决问题。