美文网首页
教你给意中人自动发心里话

教你给意中人自动发心里话

作者: 毕业了迷茫 | 来源:发表于2020-02-12 12:54 被阅读0次

这是我的Python第一个实战项目,通过百度和参考csdn里面的文章发送成功!

一、首先心里话(qinghua)需要利用爬虫自动爬取。

 # 获取情话

    texts = []  #建立一个空列表

    for i in range(1,70):

        url = 'https://www.duanwenxue.com/huayu/tianyanmiyu/list_{}.html'.format(i)  #甜言蜜语的话一共77页,for 循环提取70页

        response = requests.get(url)

        texts.append(response.text)  #到这里70页的包含html标签的情话都有了,下面只需要从里面提取需要的信息

    articles = [] 

    for text in texts:

        soup = BeautifulSoup(text,'lxml')

        arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"})  # 寻找情话内容

        #  通过列表推导式以及for循环获取到每个a标签里面的text内容并通过strip去除空格

        articles.extend([arttis[i].text.strip() for i in range(len(arttis))])

    todaywords = articles[random.randint(0, len(articles)-1)]   # 随机选取其中一条情话

    return todaywords

二、发邮件

这样邮件要发送的内容就有了。

接下来要发邮件。

发邮件部分用到了smtp模块,email模块等。

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s):

    name, addr = parseaddr(s)

    return formataddr((Header(name, 'utf-8').encode(), addr))

def sendemail(toaddr='******@163.com', message=''): #对方的邮件地址

    fromaddr = '*********@126.com' # 你的邮箱

    password = '******'    # 你的密码

    smtp_server = 'smtp.126.com'     # smtp地址

    msg = MIMEText(message, 'plain', 'utf-8')

    msg['From'] = _format_addr('自己的称呼 <%s>' % fromaddr)

    msg['To'] = _format_addr('对方的称呼 <%s>' % toaddr)

    msg['Subject'] = Header('每日晨间问候', 'utf-8').encode()

    server = smtplib.SMTP(smtp_server, 25) 

    server.set_debuglevel(1)

    server.login(fromaddr, password)

    server.sendmail(fromaddr, [toaddr], msg.as_string())

    server.quit()

    return

三、把上面的程序组成完整的程序。

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr, formataddr

import smtplib   #引入一些必要的库

def _format_addr(s):

    name, addr = parseaddr(s)

    return formataddr((Header(name, 'utf-8').encode(), addr))

def sendemail(toaddr='jrwlyelunan@163.com', message=''):

    fromaddr = '******@126.com' # 你的邮箱

    password = '******'    # 你的密码

    smtp_server = 'smtp.126.com'     # smtp地址

    msg = MIMEText(message, 'plain', 'utf-8')

    msg['From'] = _format_addr('你的称呼 <%s>' % fromaddr)

    msg['To'] = _format_addr('对方的称呼 <%s>' % toaddr)

    msg['Subject'] = Header('每日晨间问候', 'utf-8').encode()

    server = smtplib.SMTP(smtp_server, 25)

    server.set_debuglevel(1)

    server.login(fromaddr, password)

    server.sendmail(fromaddr, [toaddr], msg.as_string())

    server.quit()

    return

# -*- coding: utf-8 -*-

import requests

import random

from bs4 import BeautifulSoup

from datetime import datetime

def getlloverwords():

    # 获取情话

    texts = []

    for i in range(1,70):

        url = 'https://www.duanwenxue.com/huayu/tianyanmiyu/list_{}.html'.format(i)

        response = requests.get(url)

        texts.append(response.text)

    articles = []

    for text in texts:

        soup = BeautifulSoup(text,'lxml')

        arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"})  # 寻找情话内容

        #  通过列表推导式以及for循环获取到每个a标签里面的text内容并通过strip去除空格

        articles.extend([arttis[i].text.strip() for i in range(len(arttis))])

    todaywords = articles[random.randint(0, len(articles)-1)]   # 随机选取其中一条情话

    return todaywords

def dailymorning():

    message =  '今天我想跟你说:\n'+\

              getlloverwords()

    sendemail(toaddr='******@163.com', message=message) #地址

if __name__ == '__main__':

    dailymorning()

整个程序采用函数封装,从主函数main开始执行,先调用dailymoring()函数,接着继续调用getlloverwords()获取心里话,调用 sendemail发送邮件。

#*号部分替换成自己和对方的邮件地址

四、计算机自动执行程序发送设置

首先Python需要安装requests库和BeautifulSoup库。

然后利用计算机自动执行程序。

在搜索里面输入计算机管理进入,依次进入任务计划程序—Microsoft,右边出现创建基本任务,点击即可创建。具体可以百度。

发送后的样子是这样的:

下面说下上面的程序会遇到的问题:

首先python程序本来用的anaconda,但是利用电脑自动运行程序,就需要把程序存到硬盘,所以需要用python来执行,之前都在anaconda环境中(anaconda是虚拟环境,包含很多第三方库)我的python并没有装相关库,所以python需要装BeautifulSoup库和requests库。

安装库的时候anacanda和python很容易冲突

下面介绍一个办法防止调用python时候它们起冲突。

首先找到anaconda的安装路径

把anaconda里面的python.exe复制一个并重命名为python-ana.exe

同理,找到原来python的安装路径把Python.exe改成python3.exe

在找安装路径的时候又遇到问题,就是找不到。

这里有个简单的办法,就是重新安装,就可以重新看到安装路径。

比如我的python装在哪里我找不到了,那我就重新安装。

这样在命令行中输入Python3调用python就不会进入anaconda的环境,执行pip install + 库名就可以顺利安装Python的库

在安装库的时候,又遇到了无法安装requests库。

一般情况都是直接打开cmd窗口,输入python3进入Python的环境,然后输入pip install request

但是我的一直装不上,后来发现需要把cmd的路径更改到python3所在的文件夹,再执行就成功了。

总结:首先这个程序只是发送了一句话,其实如果能够带上天气情况更好。这也是参考文章的全部内容。但是因为目前中国天气网总出错,所以把天气部分去掉了。

另外,发邮件那里,我自己邮箱是126的,如果是其他邮箱需要做相关更改。

下次应该把参考文章做个整理,附在最后。

相关文章

网友评论

      本文标题:教你给意中人自动发心里话

      本文链接:https://www.haomeiwen.com/subject/lwzxfhtx.html