一、练习目的
二、实现步骤
三、实现过程
1.爬取在线网站的小故事并编写邮箱发送程序
# _*_ coding :utf-8 _*_ #@Time :2021/10/26 21:05 #@Author :帅哥 #@File :爬虫练习_爬取故事并实现邮箱定时发送 #@Project : import requests from bs4 import BeautifulSoup import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header import time #步骤1:爬取需要爬取的url链接 def get_url(url,headers): #发送请求 res = requests.get(url=url, headers=headers) #设定返回的编码格式(页面编码格式查看方式:右键->检查->Elements->head里面查看charset=‘xxxx’) res.encoding = 'gb2312' #进行数据解析 soup = BeautifulSoup(res.text, 'lxml') url_list = soup.find_all('a', attrs={'target': "_blank"}) new_url = [] #从9开始是为了删除非地址元素 for i in range(9, len(url_list)): url2 = url_list[i] new_url.append(url2['href']) print(url2['href']) # 依旧是为了删除非地址元素 new_url.pop(-1) new_url.pop(-1) new_url.pop(-1) return new_url # for i in new_url: # print(i) #步骤2:获取邮件发送内容 def get_content(getUrl,headers): #发送请求 _res = requests.get(url=getUrl, headers=headers) _res.encoding = 'gb2312' #数据解析 _soup = BeautifulSoup(_res.text, 'lxml') _content = _soup.find_all('p') _title = _soup.select('body > div.w.clearfix > div.left.main-content2 > div.gushi > h1 > a') # print(_title[0].get_text()) _listTitle = [] _listTitle.append(_title[0].get_text()) _sumContent = [] for i in range(len(_content)): print(_content[i].get_text()) _sumContent.append(_content[i].get_text()) # print(_sumContent) #除去多余的数据,目前不会更好的方式.... # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) # _sumContent.pop(-1) _sum_content = _listTitle + _sumContent return _sum_content # for i in _sum: # print(i) #步骤3:发送邮件 def send_mail(content): #(1)设置smtplib所需的参数。 #设置邮箱的smtp服务器地址(常用邮箱的smtp服务器地址如下:#新浪邮箱:smtp.sina.com,新浪VIP:smtp.vip.sina.com,搜狐邮箱:smtp.sohu.com,126邮箱:smtp.126.com,139邮箱:smtp.139.com,163网易邮箱:smtp.163.com。) smtpserver = 'smtp.163.com' #设置发件人,收件人 username = 'xxxx@163.com' #password 不是邮箱密码,是邮箱授权密码,步骤可参考https://blog.csdn.net/weixin_42983055/article/details/85685615 password = 'xxxx' sender = 'YimengDuan1997@163.com' # 收件人为多个收件人,通过字符串添加 receiver = ['xxxx@163.com'] #设置发送的邮件主题 subject = '东周列国故事新编' # 通过Header对象编码的文本,包含utf-8编码信息和Base64编码信息。 subject = Header(subject, 'utf-8').encode() #(2)构造邮件对象MIMEMultipart对象(实例化)并设置发送邮件的主题、内容 # 下面的主题,发件人,收件人,日期是显示在邮件页面上的。 msg = MIMEMultipart() msg['Subject'] = subject msg['From'] = 'xxxx@163.com <xxxx@163.com>' # 收件人为多个收件人,通过join将列表转换为以;为间隔的字符串 msg['To'] = ";".join(receiver) # 可选参数:msg['Date']='2021-10-16' # 构造文字内容,并通过attach添加到发送的内容中 text_plain = MIMEText(str(content), 'plain', 'utf-8') msg.attach(text_plain) #(3)发送邮件 smtp = smtplib.SMTP() smtp.connect('smtp.163.com') smtp.login(username, password) smtp.sendmail(sender, receiver, msg.as_string()) smtp.quit() if __name__ == '__main__': url = 'http://www.bestgushi.com/l/dongzhoulieguogushixinbian/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36' } # 步骤1:爬取需要爬取的url链接 getUrl=get_url(url,headers) #步骤2:获取邮件发送内容 for url in getUrl: content=get_content(url,headers) #步骤3:发送邮件-每隔60s发送一次邮件 send_mail(content) time.sleep(60) # content=get_content(getUrl[5],headers) # print(content) # # #步骤3:发送邮件-每隔60s发送一次邮件 # send_mail(content)
2.添加定时任务
compmgmt.msc
写在后面: