Python爬虫项目一—消息通知器


一、制作背景

如果要应聘某个单位,但是不知道这个单位什么时候发布招聘信息,总不能天天上官网去看吧,对于我这样孤僻的性格,消息闭塞,很有可能错过重要的招聘信息。
因此,我需要一个程序可以自动爬取网站的消息栏,如果发现有自己关注的信息,则发一封邮件给自己。
例如海盐商贸学校发布了一条招聘计算机教师的通知,我需要第一时间得到通知。

二、代码分享

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小时运行,完美解决问题。


文章作者: 彭韦浩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彭韦浩 !
  目录