京东口罩到货,邮件实时通知

一:前言
近日,一个名为【wuhan2020】的开源项目登上了GitHub Trending TOP榜,已收获4k+ Star
在这里插入图片描述
这是一个武汉新型冠状病毒防疫信息收集平台的开源项目,针对 2020 年初在武汉爆发的新型冠状病毒疫情,本项目旨在收集各医院、酒店、工厂、物流、捐赠、捐款、预防、治疗、动态等信息,统一收集,统一发布,以便各方之间进行信息互通,有效调配社会资源。疫情无情人有情,在疫情面前,众志成城,中国开发者们也都行动起来了,想着最近身边的人都买不到口罩,而口罩又是防疫中重要的一环,搜了搜京东,各大店铺均已售罄,想着就等到货通知吧,但是还没通知就被抢购一空,所以萌生了一个通过python爬虫的方式去抓取到货通知,这样一来,只要到货了第一时间邮件就能收到了,避免了错过抢购的最佳时机

二:爬虫实现思路
抓取京东店铺网页关键信息,当捕捉到无货信息时代表此时的口罩是售空的,否则就会通过qq邮件发送到自己的邮箱

三:主要使用到的Python模块
requests模块
模块说明:
1.Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码
2.在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作
3.requests会自动实现持久连接keep-alive
通过这个模块我们就可以完成两个重要的功能,一个是网页抓取,一个是邮件发送
如果未安装该模块,可以使用以下命令获取并安装

pip install requests

下面直接上代码

###########################################
#
#京东店铺口罩到货实时通知
#
###########################################

import requests
import time
from email.mime.text import MIMEText
from pip._internal.utils.outdated import SELFCHECK_DATE_FMT
from email._header_value_parser import Header

import smtplib
from email.mime.text import MIMEText          #用于构建邮件内容
from email.header import Header               #用于构建邮件头
# 商品链接
Url = [
    'https://c0.3.cn/stock?skuId=100011293950&area=19_1607_4773_0&venderId=1000078145&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1580214678781491106132&ch=1&callback=jQuery4173314',
    'https://c0.3.cn/stock?skuId=100002810158&area=2_2824_51916_0&venderId=646174&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=1580214678781491106132&ch=1&callback=jQuery4188953',
]

class Mail:
    '定义一个邮箱类'
    Msgs = ''
    #初始化发送方,接收方的邮箱信息
    def __init__(self, FromMail, Authentication, ToMail, Msg):
        self.frommail = FromMail
        self.password = Authentication
        self.tomail = ToMail
        self.msg = Msg
    
    def make_mail(self, url):
         self.Msgs = MIMEText(url + self.msg, 'plain', 'utf-8')
         self.Msgs['From'] = Header(self.frommail)
         self.Msgs['To'] = Header(self.tomail)
         self.Msgs['Subject'] = Header(self.msg)
    
    def send_mail(self, url):
            self.make_mail(url)
            print("开启邮件服务")
            server = smtplib.SMTP_SSL(host='smtp.qq.com')  # 开启发信服务,这里使用的是加密传输
            print("连接服务器")
            server.connect(host='smtp.qq.com', port=465)
            print("登录服务器")
            server.login(self.frommail, self.password)
            print("发送邮件")
            server.sendmail(self.frommail, self.tomail, self.Msgs.as_string())
            print("发送邮件成功")
            server.quit()                                                                         # 关闭服务器
 
times = 1
if __name__ == "__main__":
    mail = Mail('13501065xx@qq.com', 'zndzkblqgpobjfid', '13501065xx@qq.com', '口罩到货啦!!!')
while True:
    try:
        print('第' + str(times) + '次 ' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
        times += 1
        session = requests.Session()
        session.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/531.36",
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
            "Connection": "keep-alive"
        }
        for i in Url:
            skuidUrl = 'https://item.jd.com/' + i.split('skuId=')[1].split('&')[0] + '.html'
            response = session.get(i)
            #print(response.text)
            if (response.text.find('无货') > 0):
                print("商品链接:%s  口罩已售空" % skuidUrl)
            else:
                print("商品链接:%s 口罩已到货!!! " % skuidUrl)
                mail.send_mail(skuidUrl)
        time.sleep(60)
        
    except Exception as e:
        print("异常!!!")
        time.sleep(10)
        

四:开通POP3/SMTP服务
这里因为是第三方登录邮箱,所以需要开通qq邮箱的POP3/SMTP
开通方法如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
五:运行结果

12020-02-02 19:46:58
商品链接:https://item.jd.com/100011293950.html  口罩已售空
商品链接:https://item.jd.com/100002810158.html 口罩已到货!!! 
开启邮件服务
连接服务器
登录服务器
发送邮件
发送邮件成功
第22020-02-02 19:47:59
商品链接:https://item.jd.com/100011293950.html  口罩已售空
商品链接:https://item.jd.com/100002810158.html 口罩已到货!!! 
开启邮件服务
连接服务器
登录服务器
发送邮件
发送邮件成功

邮箱收件如下
在这里插入图片描述
六:如何增加自己要搜索的店铺
在这里插入图片描述
本篇文章到此介绍完口罩店铺到货情况爬虫思路及代码实现,希望对你们有帮助,谢谢!如果有不正确或者需要补充的地方,欢迎评论区留言!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 口罩实时识别系统可以使用MaixPy3和OpenMV等平台来实现,以下是基于MaixPy3平台的实现步骤: 1. 准备硬件设备,包括MaixPy3开发板、OV2640摄像头模块和显示屏。 2. 安装MaixPy3开发环境,并将MaixPy3固件烧录到开发板上。 3. 连接摄像头模块和显示屏到开发板上。 4. 下载口罩数据集,并使用深度学习框架(如TensorFlow、PyTorch等)进行训练,得到模型文件。 5. 将模型文件转换为MaixPy3支持的格式(如.tflite格式)。 6. 使用MaixPy3提供的图像处理库(如image、camera等)读取摄像头图像,并使用模型进行口罩识别。 7. 在显示屏上显示识别结果,可以使用MaixPy3提供的GUI库(如LCD、Touch等)实现交互界面。 以上是基于MaixPy3平台的口罩实时识别系统实现步骤,具体实现还需要根据具体情况进行调整和优化。 ### 回答2: 基于MaixPy3的口罩实时识别系统是一种利用人工智能技术实现的自动识别口罩佩戴情况的系统。 该系统首先使用MaixPy3开发板搭建硬件平台,通过摄像头采集人脸图像。然后,利用深度学习算法对采集到的人脸图像进行处理和识别。系统通过训练好的神经网络模型,能够准确地判断人脸上是否佩戴了口罩。 在实时识别过程中,系统能够实时显示人脸图像,并框出人脸位置。同时,根据识别结果,系统会及时给出判断,如果检测到佩戴了口罩,会显示“佩戴口罩”,如果检测到未佩戴口罩,会显示“未佩戴口罩”,以便操作者能够快速了解情况。 该系统具有响应速度快、准确性高、实时性强等优点。它可以应用于公共场所、交通站点、学校等人员密集区域,对于保障公共卫生和培养良好卫生习惯具有重要意义。例如,在一些需要佩戴口罩的场所,系统可以通过声音或灯光等方式提醒未佩戴口罩的人员。 此外,该系统还具备一定的智能化功能,可以通过对口罩佩戴情况的数据进行分析和统计,帮助相关部门进行流行病的监控和疫情的防控工作。 总而言之,基于MaixPy3的口罩实时识别系统通过结合硬件平台和深度学习算法,能够快速、准确地进行口罩佩戴情况的识别和显示,具有广泛应用前景。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值