Job Search Engine


771 浏览 5 years, 1 month

1.3 定时调度和邮件推送

版权声明: 转载请注明出处 http://www.codingsoho.com/

定时调度和邮件推送

主程序

if __name__ == '__main__':
    notify()
    schedule.every().day.at("10:30").do(notify)
    while True:
        schedule.run_pending()
        time.sleep(1)

爬取

def notify():
    scrap_records = sql_helper.session.query(TriggerScrapRecord).all()
    for record in scrap_records:
        param = {'username': record.username, 'keyword': record.keyword, 'href': record.href}
        func_sync(*(param,))
        if record.email:
            oneDayAgo = (datetime.datetime.now() - datetime.timedelta(days = 1))
            from sqlalchemy import Date, cast
            from datetime import date
            print(type(record.job_entries), type(record))
            job_entries_objs = record.job_entries.filter(JobEntry.created > oneDayAgo ).all() 
            if len(job_entries_objs):
                send_mail(job_entries_objs, [record.email, ])     
    sys.exit()

发送邮件

def send_mail(entries, destination):
    mail_msg = """
    <table style="border: solid 1px;">
    %s
    </table>
    """    
    strings = ""
    fields = ['title', 'salary', 'company', 'region', 'degree', 'experience', 'industry', 'description']
    max = len(entries) if len(entries) < 100 else 100
    for entry in entries[0:max]:
        for field in fields:
            strings += """
            <tr>
                <td style="background-color:grey; color:white;">{}</td>
                <td>{}</td>
            </tr>
            """.format(field, getattr(entry, field))
        strings += """
            <tr>
                <td style="background-color:grey; color:white;">href</td>
                <td><a href="{}">href</a></td>
            </tr>        
        """.format(entry.href)
        strings += """
        </table>
        <br>
        <table style="border: solid 1px;">
        """        
    mail_msg = """
    <table>
        %s
    </table>
    """ % (strings)     
    mailsending.sendmail("codingsoho job notification", mail_msg, destination=destination)