大家好,我是Python进阶。前言前几天【风城】大佬在群里分享了一个代码,实现抓取阅读目录,实现邮件定时发送。感觉还不错,在这里分享给大家学习。1.思路思路不难。构造一个爬虫任务,抓取某图书网站上的目录,然后返回获取的内容,然后使用Python实现发送邮件的功能。剩下的就是构建定时任务了,下面我们一起来看看具体的实现过程。2.具体实现这里是老大的代码,如下:#-*-coding:utf-8-*-importrequests,bs4importsmtplibimportscheduleimporttimefrombs4importBeautifulSoupfromemail.mime.textimportMIMETextfromemail.headerimportHeader#account='{0}'.format('Senderqq邮箱')#password='{0}'.format('qq邮箱授权码')#receiver='{0}'.format('收件人163邮箱或qq邮箱')account='{0}'.format('2352180977@qq.com')password='{0}'.format('awmowqginzdijg')receiver='{0}'.format('2352180977@qq.com')#crawlertask,获取title和本书作者在sobooks网站上,页面可以根据自己的需要修改defrecipe_spider():list_all=''num=0forainrange(1,3):n='{0}{1}'.format('https://sobooks.cc/page/',a)res=requests.get(n)res.encoding=res.apparent_encodingbs=BeautifulSoup(res.text,'html.parser')#print(bs)books=bs.find_all('h3')authors=bs.find_all('p')foriinrange(len(books)):num=num+1book=books[i].text.strip()author=作者[i+1].text.strip()#list_books.append([book,author])#list_books.append(list_book)n='''书名%s:%s,作者:%s'''%(num,book,author)list_all=list_all+nreturnlist_all#将获取的内容发送到邮箱defsend_email(list_all):globalaccount,password,receivermailhost='smtp.qq.com'qqmail=smtplib.SMTP()qqmail.connect(mailhost,25)qqmail.login(account,password)content='亲,今天的书单'+list_allprint(content)message=MIMEText(content,'plain','utf-8')subject='今天看什么'message['Subject']=Header(subject,'utf-8')try:qqmail.sendmail(account,receiver,message.as_string())print('邮件发送成功')except:print('邮件发送失败')qqmail.quit()defjob():print('开始任务')list_all=recipe_spider()send_email(list_all)print('taskcompleted')if__name__=='__main__':#定时任务,其中0.05是间隔的意思,间隔为分钟,默认时间为整数schedule.every(0.05).minutes.do(job)whileTrue:schedule.run_pending()time.sleep(1)程序运行后,可以自动发送邮件。稍等片刻,邮件将自动发送给您。下图是邮件通知。下图是邮件的具体内容:上面的代码,只需要改三个地方,一个是发件人的qq邮箱,一个是qq邮箱的授权码,第三个是收件人的邮箱,如下图红框所示。3、常见问题在运行过程中,应该经常会遇到这个问题,如下图所示。这可能是因为您的电子邮件地址不正确或授权码错误。检查是否添加了邮箱后缀或者检查授权码是否复制完整。有的朋友不知道如何获取QQ邮箱授权码。攻略在这里,首先你要打开你的QQ邮箱,然后点击设置-->账户,如下图:拉到最下面,如下图:点击生成授权码,然后会弹出如下界面:手机发送关键词“configureemailclient”,记住,是“mail”,不是“mailbox”,因为之前小编发错词了,所以失败了,论细心的重要性!发送成功后会弹出下图:上图左边方框的字母部分是qq邮箱的授权码,复制到代码里粘贴即可。4.总结我是Python进阶者。本文主要介绍一个使用Python网络爬虫定时自动发送邮件的小项目。实现的主要思路是构造一个爬虫任务,抓取一个图书网站上的目录,然后返回获取到的内容,然后用Python实现发送邮件的功能,并构建一个定时任务。最后,我将举例说明常见的Howtodealtheproblem。小伙伴们快来练起来吧!
