Python 定时邮件每周五下午5点,随机推荐三部电影,发送到我的邮箱

import requests
import openpyxl
import csv
from bs4 import BeautifulSoup
import random
from urllib.request import quote
import time
import smtplib
import schedule
from email.mime.text import MIMEText
from email.header import Header

account = '[email protected]'
password = 'hwg'
receiver = ['[email protected]','[email protected]']

def movie_send():
    #创建excel存储爬取的douban top250电影信息
    wb=openpyxl.Workbook()
    sheet=wb.active
    sheet.title='movie_info'
    sheet['A1'] ='序号'
    sheet['B1'] ='电影名'
    sheet['C1'] ='电影连接'
    sheet['D1'] ='文字简介'
    a=0
    b=0while a<=225:
        headers={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
        }
        url='https://movie.douban.com/top250?start={}&filter='.format(a)
        a=a+25
        res=requests.get(url,headers=headers)
        bs=BeautifulSoup(res.text,'html.parser')
        items=bs.find_all(class_='item')
        for item in items:
            movie_name=item.find(class_='title').text
            movie_url =item.find('a')['href']
            movie_inq =item.find(class_='inq').text
            movie_photo=item.find('img')['src']
            b=b+1
            movie_list.append(movie_name)  
            sheet.append([b,movie_name,movie_url,movie_inq])#保存电影信息到excel
    wb.save('D:\\pythontest\\python_reptile\\douban_movie_list.xlsx')
    print('ok')
    
    #excel的读取
    wb=openpyxl.load_workbook('D:\\pythontest\\python_reptile\\douban_movie_list.xlsx')
    #调用openpyxl.load_workbook()函数,打开" ***.xlsx "文件。
    sheet=wb['movie_info']#获取“Marvel.xlsx”工作薄中名为“movie_info”的工作表
    #sheetname=wb.sheetnames#sheetnames 是用来获取工作薄所有工作表的名字,如果不知道工作薄到底有几个工作表,就可以把工作表的名字都打印出来。
    movie_text=''

    #随机选取3部电影,并打印
    for i in range(1,4):
        num=random.randint(1,250)
        B2=sheet['B'+str(num)]  #把“movie_info”工作表中B2单元格赋值给B2_cell
        B2_value=B2.value       #再利用单元格.value属性

        # 这是爬电影的下载链接的代码
        movie=B2_value
        gbkmovie = movie.encode('gbk')
        urlsearch = 'http://s.ygdy8.com/plus/s0.php?typeid=1&keyword='+quote(gbkmovie)
        res = requests.get(urlsearch)
        res.encoding='gbk'
        soup_movie = BeautifulSoup(res.text,'html.parser')
        urlpart=soup_movie.find(class_="co_content8").find_all('table')
        if urlpart:
            urlpart=urlpart[0].find('a')['href']
            urlmovie='https://www.ygdy8.com/'+urlpart
            res1=requests.get(urlmovie)
            res1.encoding='gbk'
            soup_movie1=BeautifulSoup(res1.text,'html.parser')
            urldownload=soup_movie1.find('div',id="Zoom").find('span').find('table').find('a')['href']
            movie_all='''
            第%d部电影:%s
            电影链接:%s
            '''%(i,movie,urldownload)
            movie_text=movie_text+movie_all
        else:
            movie_miss='没有'+movie+'的链接'
            movie_all='''
            第%d部电影:%s
            电影链接:%s
            '''%(i,movie,movie_miss)
            movie_text=movie_text+movie_all
    return movie_text    

def send_email(movie_text):#封装send_email()函数,用于发送邮件
    #1、连接服务器
    mailhost='smtp.qq.com'          #邮件地址服务器赋值给变量mailhost
    qqmail=smtplib.SMTP_SSL(mailhost)#实例化一个smtplib模块的SMTP对象
    qqmail.connect(mailhost,465)     #连接服务器,传递两个参数,参数1:服务器地址,参数2:端口号。
    #2、登录
    qqmail.login(account,password)   #调用.login()方法登录邮箱
    #3、正文获取 引入Headr 和 MIMEText模块
    content= movie_text
    print(content)                   #打印正文,用于观察
    message = MIMEText(content, 'plain', 'utf-8')#实例化一个MIEIText邮件对象,传入三个参数:邮件正文,文本格式,编码。
    #在等号右边实例化一个Header对象,该对象传入两个参数:邮件主题,编码。然后赋值给等号左边的变量
    subject = '随机推荐三部电影'                    #邮件主题
    message['From'] = Header(account)             #发件人信息
    message['To'] = Header(",".join(receiver))    #收件人信息
    message['Subject'] = Header(subject, 'utf-8') #邮件主题
    #4、发送邮件,调用sendmail()方法,传入三个参数:1、发件人,2、收件人,3、字符串的正文
    try:
        qqmail.sendmail(account, receiver, message.as_string())
        print ('邮件发送成功')
    except:
        print ('邮件发送失败')
    #5、退出邮箱
    qqmail.quit()

def job():
    print('开始一次任务')
    movie_text= movie_send()#调用weather_spider()函数,并将返回的值赋值给变量
    send_email(movie_text)       #调用send_email()传入参数
    print('任务完成')
 
schedule.every().friday.at("17:00").do(job)
while True:
    schedule.run_pending()
    time.sleep(1)

#运行结果

猜你喜欢

转载自www.cnblogs.com/zxzxq/p/12045707.html
今日推荐