需求分析

昨天,我制作了爬取游戏优惠信息的程序,很快啊,一个朋友私信我说,你这个没用。这个话好像很耳熟啊,前两天就有朋友说我这个没用,主要因为是当时爬到的内容是外文的,看不懂,现在这个问题已经解决了,都是中文的了,怎么还没有用呢?

这个朋友说,“你这个优惠信息啊,网站上都有,我直接上网站上看一下不就行了吗,为什么还需要你这个爬虫程序呢?完全不能够理解啊,这有什么区别呢?”

我说,“这个程序啊,可以监测游戏价格,如果游戏价格没有变化,那么就不发送通知,如果游戏价格优惠了,就发送通知,这就避免了我们每天去网站上查看价格了,这个有用吧?”

他一听,诶,有点心动,但是呢,他还是不是很理解,“发送价格通知,这个功能要怎么做呢?”

本期,我们将制作将爬取到的数据内容发送到邮箱的程序

发送邮件

传统的发送邮件的方式,在菜鸟教程上已经写的很清楚了,使用上边的方法,就可以完成邮件的发送,而且使用的都是python的内置库

其中需要注意的是,如果我们自己没有邮件服务器,就需要使用第三方邮件的服务器,比如通过qq邮箱进行邮件的发送

import smtplib
from email.mime.text import MIMEText
from email.header import Header# 使用SMTP的服务
mail_host = ""  # 服务器
mail_user = ""  # 用户名
mail_pass = ""  # 密钥sender = ""  # 发送者
receivers = [""]  # 接收方message = MIMEText("邮件信息", "plain", "utf-8")
message["From"] = Header("发送者", "utf-8")
message["To"] =  Header("接受者", "utf-8")subject = "标题内容"
message['Subject'] = Header(subject, "utf-8")try:smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25)    # 如果端口号不是25,要根据实际内容来使用smtpObj.login(mail_user,mail_pass)  smtpObj.sendmail(sender, receivers, message.as_string())print("邮件发送成功")
except smtplib.SMTPException as e:print("错误,邮件发送失败")raise

传统的邮件发送,需要实现的代码部分还是比较多的,可能会比较麻烦,容易出错。这也不要紧,现在还有大佬完成好的封装程度很高的yagmail库可以使用,使用yagmail就可以更容易的发送邮件了

如果你还不知道这个,可以前往yagmail库的github地址进行下载和学习

使用方法也是非常的简单,通过这样一个简单的案例,就可以简单的进行使用了

import yagmail # user处填写用户名
# password处填写密钥
# host处填写邮件服务地址
yag = yagmail.SMTP(user="", password="", host="", encoding="utf-8")# 要发送的内容之所以是一个列表
# 是因为后边还可以加上要携带发送的附件,例如图片或者音频等
# 如果你不要发送其他的,可以只放正文内容
content = ["要发送的内容"]yag.send("接收方的邮件地址", "标题内容", content)

可以看到,比起传统方法,明显是容易了许多,这也要感谢yagmail作者的贡献,谢谢!

完整代码实现

import requests
import base64
import yagmail
from lxml import etreeuser = ""
password = ""
host = ""
receiver = ""base_url = "aHR0cHM6Ly9zdG9yZS5zdGVhbWNoaW5hLmNvbS9zZWFyY2gvP3NwZWNpYWxzPTE="
url = base64.b64decode(base_url).decode()headers = {"user-agent": "Mozilla/5.0"}r = requests.get(url, headers=headers)html = etree.HTML(r.text)div = html.xpath("//div[@class='responsive_search_name_combined']")text = ""for i in div:title = i.xpath(".//span[@class='title']/text()")[0]if not len(i.xpath(".//div[@class='col search_discount responsive_secondrow']/span/text()")):continuetext += "游戏名:"text += titletext += "\n"discount = i.xpath(".//div[@class='col search_discount responsive_secondrow']/span/text()")[0]text += "折扣:"text += discounttext += "\n"price = i.xpath(".//div[@class='col search_price discounted responsive_secondrow']/span/strike/text()")[0]text += "原价:"text += pricetext += "\n"new_price = i.xpath(".//div[@class='col search_price discounted responsive_secondrow']/text()")[1]text += "现价:"text += new_pricetext += "\n"yag = yagmail.SMTP(user=user, password=password, host=host, encoding="utf-8")
yag.send(receiver, "新一期的游戏优惠信息", [text])

注意,以上的完整代码也是不可以直接运行的,必须按照文章中的说明,配置好你自己的账号服务信息以后,才能够使用该程序

由于使用的邮件服务的不同,可能会遇到一些问题,可以尝试解决,或者直接使用其他家可用的邮件服务

爬取游戏优惠信息,并且将结果发送到邮箱相关推荐

  1. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...

    利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...

  2. Python批量爬取游戏卡牌信息

    文章目录 前言 一.需求 二.分析 三.处理 四.运行结果 前言 本系列文章来源于真实的需求 本系列文章你来提我来做 本系列文章仅供学习参考 阅读人群:有Python基础.Scrapy框架基础 一.需 ...

  3. 对虎牙直播进行爬取,并对信息进行处理分析

    对虎牙直播进行爬取,并对信息进行处理分析 08.16爬虫练手 一.代码 import requests from lxml.html import etree#我们先选个lol专区 response ...

  4. Python爬虫使用selenium爬取天猫商品信息

    文章目录 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我 ...

  5. 【爬虫作业】使用scrapy爬取游戏发售表,存入mongo数据库

    需求分析 昨天,我发布了爬取游戏发售表的文章,有一个小伙伴看完了以后,非常的困扰,他问我说,"仙草哥哥,你这个爬虫程序虽然很好,基本的功能也实现了,但是我觉得它太简单了,总共才几十行,不像一 ...

  6. 暑假玩什么游戏?通过爬虫程序爬取游戏发售表

    需求分析 今天考试终于结束了,接下来就要迎来快乐的暑假了.虽然,今天确实没有小伙伴问我问题,但是想必暑假最重要的事情就是玩游戏啦!那么问题来了,有什么游戏可以玩呢?旧的游戏固然很好玩,但是谁不喜欢新的 ...

  7. day02:requests爬取豆瓣电影信息

    一.requests爬取豆瓣电影信息 -请求url: https://movie.douban.com/top250 -请求方式: get -请求头: user-agent cookies二.sele ...

  8. 爬虫基本库request使用—爬取猫眼电影信息

    使用request库和正则表达式爬取猫眼电影信息. 1.爬取目标 猫眼电影TOP100的电影名称,时间,评分,等信息,将结果以文件存储. 2.准备工作 安装request库. 3.代码实现 1 imp ...

  9. layui获取input信息_python爬虫—用selenium爬取京东商品信息

    python爬虫--用selenium爬取京东商品信息 1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Hea ...

最新文章

  1. pc端汽车obd软件下载?_常用的ERP软件电脑端下载
  2. websocket检测服务器是否断开_websocket – 如何检测用户是否因网络断开而离开Phoenix通道?...
  3. spring的多个.xml配置文件要保证在同一个容器中
  4. Oracle 数据库linux下sql命令行按回退键变成^H字符输入问题解决方法
  5. 多线程经典问题之多窗口卖票
  6. 【转】ABP源码分析四十一:ZERO的Audit,Setting,Background Job
  7. 学妹问,学网站开发还是打 ACM?
  8. CentOS8 安装图形界面后,怎么转换为命令行界面
  9. 创建型模式之工厂方法模式
  10. 管理oracle 11g RAC 常用命令
  11. 根据两点经纬度计算距离和角度
  12. echarts绘制世界地图,中国地图在中间
  13. python解析excel公式_读取Excel单元格值,而不是计算它的公式-openpyx
  14. Duplicate entry 'dage' for key 'PRIMARY'
  15. 计算机电子科技生产质量标准,SJT9527__微型数字电子计算机 质量分等标准(4页)-原创力文档...
  16. 纹理压缩简介 DXT PVR ETC
  17. 基于FFmpeg的视频播放器之十一:倍速播放
  18. 在修改了PS1环境变量后,系统终端出现不换行问题解决
  19. 快过年了,Python实现12306查票以及自动购票....
  20. Kotlin开发遇到java.lang.VerifyError问题记录

热门文章

  1. fiddler抓包 - Android 虚拟机
  2. OpenGL学习三十九:飘动的旗帜
  3. oracle数据库监听说法正确,Oracle数据库错题合集
  4. 飞腾2000/4C调试问题记录
  5. 考研政治---马克思主义基本原理概论---唯物史观
  6. 以太坊中的nonce
  7. python 字符串输出时 使用空格隔开
  8. JavaScript网页特效-折叠面板
  9. 前端与美工职能上的区别
  10. 解决Bean with name ‘XX‘ has been injected into other beans 问题