手把手教你用Python网络爬虫+自动化来创建一位属于你自己的虚拟女神(附源码)

大家好,我是白小纯。

我们提供的服务有:做网站、网站建设、微信公众号开发、网站优化、网站认证、郊区ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的郊区网站制作公司

前言

咳咳,都公元1202年了,各位帅气的小哥哥怎么可能没有女朋友呢,这就马上安排。

呐,这就是今天我要带各位小伙伴“领养”的女友冰冰~

啊,冰冰真好看。这里给大家介绍下冰冰女神:王冰冰,出生于吉林省长春市,中国内地女记者。

今天天气很热,但我的心还是冰冰的。

想要一位这样的女朋友吗?

想要和冰冰说上一些悄悄话吗?

想要冰冰回复你的来信并给你私发邮件附上她的美照吗?

那么就和我一起来吧!

一、爬取冰冰动图

第一步很简单,上某度就可以直接搜到冰冰的照片。

右键选择你喜欢的图片,在新标签页中打开图片,复制上方的url,如图:

用requests.get(url).content获取图片,并用with open保存在本地。

我选取了3张冰冰的gif动图并保存在一个列表中并随机返回一张,各位想扩充冰冰图库很容易,代码如下。

 
 
 
 
  1. def getbb():
  2.     w0='https://img1.baidu.com/it/u=1762637264,598758602&fm=26&fmt=auto&gp=0.jpg'
  3.     w1='https://img1.baidu.com/it/u=2231058723,1803013600&fm=11&fmt=auto&gp=0.jpg'
  4.     w2='https://img0.baidu.com/it/u=3960011140,3634140813&fm=11&fmt=auto&gp=0.jpg'
  5.     wlist=[w0,w1,w2]
  6.     global i
  7.     i=random.randint(0,2)#随机选取一个冰冰动图
  8.     url=wlist[i]
  9.     req=requests.get(url).content
  10.     with open(f'wbb{i}.gif','wb') as p:
  11.         p.write(req)

二、自动生成表白话语

这里的表白话语是你想和冰冰说的话哦,你可以自己打字,当然你要是表白话语都懒得自己说,小编也帮你自动爬取了网上的文学诗篇哦,要多有诗人气质就多有气质。

也将此功能封装成一个函数如下:

 
 
 
 
  1. def getwords():
  2.     texts = []
  3.     url = 'https://www.duanwenxue.com/huayu/lizhi/list_{}.html'.format(random.randint(1,114))
  4.     response = requests.get(url)
  5.     texts.append(response.text)
  6.     articles = []
  7.     for text in texts:
  8.         soup = BeautifulSoup(text,'lxml')
  9.         arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"})  # 寻找情话内容
  10.             #  通过列表推导式以及for循环获取到每个a标签里面的text内容并通过strip去除空格
  11.         articles.extend([arttis[i].text.strip() for i in range(len(arttis))])
  12.     todaywords = articles[random.randint(0, len(articles)-1)]   # 随机选取其中一条情话
  13.     return todaywords

三、冰冰回信ing

接下来要进入重点了,你给冰冰说话了,还要让冰冰给你回复,那如何来实现呢?

这里用一个智能机器人模拟冰冰并生成回信内容。

现在的智能聊天机器人有不少,推荐有钱可以选图灵机器人,免费的可以用青云客。

此文用青云客实现,无需注册,直接调用接口即可,非常方便。

封装成一个函数,输入表白话语,自动返回智能对话:

 
 
 
 
  1. def qingyunke(msg):
  2.     url = f'http://api.qingyunke.com/api.php?key=free&appid=0&msg={msg}'
  3.     html = requests.get(url)
  4.     return html.json()["content"]

读者有兴趣可以试一试这个功能,将第二步爬取到的sao话作为函数的输入msg会发生很有趣的事:

四、冰冰向您发送了新邮件

最后就是要让冰冰给您发送私信并附上她的美照了~

可以用常见的邮箱实现,比如163邮箱或者QQ邮箱都可以。

这里以163邮箱为例,点击设置:

点击POP3/SMTP/IMAP:

点击开启IMAP/SMTP服务:

会生成一个授权码,这个授权码复制下来,后面需要用到。

下面是我写好的代码,你只需要填写你的账号和授权码就可以了哦。

 
 
 
 
  1. def sendemail():
  2.     msgword = getwords()
  3.     res = qingyunke(msgword)
  4.     xhx='你的163邮箱账号'#你实际使用的163邮箱账号
  5.     pwd = '你的授权密码'#刚刚生成的163授权密码
  6.     wy163list=[xhx]#收件人列表,可以扩充
  7.     host_server = 'smtp.163.com'  #163邮箱smtp服务器
  8.     sender = f'{xhx}@163.com' #发件人邮箱
  9.     receiver = f'{wy163list[0]}@163.com'#收件人
  10.     mail_title = '冰冰向您发送了新邮件' #邮件标题
  11.     #邮件正文内容
  12.     #为保证接口稳定,调用频率请控制在200次/10分钟
  13.     mail_content = f"亲爱的{wy163list[0]},我是冰冰,

    上次收到你给我的来信:

    {msgword}

    我很感动,特意给你回信并附上冰冰的美照哦~

    现在我想对你说:

    {res}

    您好,

    欢迎关注我的CSDN个人账号以获取最新创意好文,

    开启python魔法之旅:

     

    点击此处进入CSDN

    "
  14.     msg = MIMEMultipart()
  15.     #将图片显示在正文
  16.     global i
  17.     with open(f'wbb{i}.gif', 'rb') as f:
  18.         #图片添加到正文
  19.         msgImage = MIMEImage(f.read())
  20.         # 定义图片ID
  21.     msgImage.add_header('Content-ID', '')
  22.     msg.attach(msgImage)
  23.     msg["Subject"] = Header(mail_title,'utf-8')
  24.     msg["From"] =Header("冰冰","utf-8")
  25.     msg["To"] = receiver
  26.     msg.attach(MIMEText(mail_content,'html'))
  27.     try:
  28.         smtp = SMTP_SSL(host_server) # ssl登录连接到邮件服务器
  29.         smtp.set_debuglevel(1) # 0是关闭,1是开启debug
  30.         smtp.ehlo(host_server) # 跟服务器打招呼,告诉它我们准备连接,最好加上这行代码
  31.         smtp.login(sender,pwd)
  32.         smtp.sendmail(sender,receiver,msg.as_string())
  33.         smtp.quit()
  34.         print("邮件发送成功")
  35.     except smtplib.SMTPException:
  36.         print("无法发送邮件")

五、本文完整代码

到这里呢,本文就该告一段落了,小编这里把整体代码都奉上啦,欢迎大家动手实践,有问题可以随时私我噢。

 
 
 
 
  1. # -*- coding: utf-8 -*-
  2. from bs4 import BeautifulSoup
  3. import random
  4. import requests
  5. from smtplib import SMTP_SSL
  6. import smtplib
  7. from email.mime.text import MIMEText
  8. from email.mime.multipart import MIMEMultipart
  9. from email.header import Header
  10. from email.mime.image import MIMEImage
  11.  
  12. def getbb():
  13.     w0='https://img1.baidu.com/it/u=1762637264,598758602&fm=26&fmt=auto&gp=0.jpg'
  14.     w1='https://img1.baidu.com/it/u=2231058723,1803013600&fm=11&fmt=auto&gp=0.jpg'
  15.     w2='https://img0.baidu.com/it/u=3960011140,3634140813&fm=11&fmt=auto&gp=0.jpg'
  16.     wlist=[w0,w1,w2]
  17.     global i
  18.     i=random.randint(0,2)#随机选取一个冰冰动图
  19.     url=wlist[i]
  20.     req=requests.get(url).content
  21.     with open(f'wbb{i}.gif','wb') as p:
  22.         p.write(req)
  23.  
  24. def getwords():
  25.     texts = []
  26.     url = 'https://www.duanwenxue.com/huayu/lizhi/list_{}.html'.format(random.randint(1,114))
  27.     response = requests.get(url)
  28.     texts.append(response.text)
  29.     articles = []
  30.     for text in texts:
  31.         soup = BeautifulSoup(text,'lxml')
  32.         arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"})  # 寻找情话内容
  33.             #  通过列表推导式以及for循环获取到每个a标签里面的text内容并通过strip去除空格
  34.         articles.extend([arttis[i].text.strip() for i in range(len(arttis))])
  35.     todaywords = articles[random.randint(0, len(articles)-1)]   # 随机选取其中一条情话
  36.     return todaywords
  37.  
  38. def qingyunke(msg):
  39.     url = f'http://api.qingyunke.com/api.php?key=free&appid=0&msg={msg}'
  40.     html = requests.get(url)
  41.     return html.json()["content"]
  42.  
  43. def sendemail():
  44.     msgword = getwords()
  45.     res = qingyunke(msgword)
  46.     xhx='你的163邮箱账号'#你实际使用的163邮箱账号
  47.     pwd = '你的授权密码'#刚刚生成的163授权密码
  48.     wy163list=[xhx]#收件人列表,可以扩充
  49.     host_server = 'smtp.163.com'  #163邮箱smtp服务器
  50.     sender = f'{xhx}@163.com' #发件人邮箱
  51.     receiver = f'{wy163list[0]}@163.com'#收件人
  52.     mail_title = '冰冰向您发送了新邮件' #邮件标题
  53.     #邮件正文内容
  54.     #为保证接口稳定,调用频率请控制在200次/10分钟
  55.     mail_content = f"亲爱的{wy163list[0]},我是冰冰,

    上次收到你给我的来信:

    {msgword}

    我很感动,特意给你回信并附上冰冰的美照哦~

    现在我想对你说:

    {res}

    您好,

    欢迎关注我的CSDN个人账号以获取最新创意好文,

    开启python魔法之旅:

     

    点击此处进入CSDN

    "
  56.     msg = MIMEMultipart()
  57.     #将图片显示在正文
  58.     global i
  59.     with open(f'wbb{i}.gif', 'rb') as f:
  60.         #图片添加到正文
  61.         msgImage = MIMEImage(f.read())
  62.         # 定义图片ID
  63.     msgImage.add_header('Content-ID', '')
  64.     msg.attach(msgImage)
  65.     msg["Subject"] = Header(mail_title,'utf-8')
  66.     msg["From"] =Header("冰冰","utf-8")
  67.     msg["To"] = receiver
  68.     msg.attach(MIMEText(mail_content,'html'))
  69.     try:
  70.         smtp = SMTP_SSL(host_server) # ssl登录连接到邮件服务器
  71.         smtp.set_debuglevel(1) # 0是关闭,1是开启debug
  72.         smtp.ehlo(host_server) # 跟服务器打招呼,告诉它我们准备连接,最好加上这行代码
  73.         smtp.login(sender,pwd)
  74.         smtp.sendmail(sender,receiver,msg.as_string())
  75.         smtp.quit()
  76.         print("邮件发送成功")
  77.     except smtplib.SMTPException:
  78.         print("无法发送邮件")
  79.  
  80. if __name__ == '__main__':
  81.     getbb()
  82.     sendemail()

运行时间大概在30s~1min30s哦,快登录你的邮箱查看冰冰给你的悄悄话吧。

效果如下:

好了,各位有没有get到冰冰呢?欢迎在下方评论区留言讨论哦。

六、总结

本文基于Python网络爬虫,抓取了王冰冰靓女的动图图片,之后利用网络爬虫技术获取了文学诗篇网站的表白桥段,通过青云客平台,打造了一款智能机器人模拟冰冰回信,并且基于邮箱服务器,模拟冰冰向自己发送新邮件,每天打开邮箱,都可以收到女神的邮箱,心情美滋滋~如此有趣的项目,快快来尝试吧!

分享标题:手把手教你用Python网络爬虫+自动化来创建一位属于你自己的虚拟女神(附源码)
当前URL:http://www.shufengxianlan.com/qtweb/news22/261772.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联