Python 写的一段蔚来二手上架通知简易版
领导希望监控蔚来二手车的价格走势,以便了解市场动态。为此,我编写了一个定时任务,用于自动追踪二手车价格变化。当有新车上架时,系统会自动发送邮件通知至指定邮箱。这一任务旨在帮助领导及时掌握市场信息,为购车决策提供数据支持。通过自动化监控,可以节省大量时间和精力,提高工作效率。

以前领导想买蔚来的汽车,想看二手车的价格走势,让帮忙写了一段监控二车价格的定时任务,当有新车上架的时候发生邮件到指定邮箱.

#!/usr/bin/python3
import requests
import json
import schedule
import smtplib
import time
import logging
from email.mime.text import MIMEText

# 日志配置
# 
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"    # 日志格式化输出
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"                        # 日期格式
fp = logging.FileHandler('sendHand.log', encoding='utf-8')
fs = logging.StreamHandler()
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT, handlers=[fp, fs])    # 调用


email_host = '发送邮件服务器'
email_user = '发送邮箱账号'
email_pwd = '发送邮箱密码'
maillist ='接受邮箱列表'

cars = set()
def checkHand():
    logging.debug('run task')
    logging.basicConfig()
    if 90000 < int(time.strftime("%H%M%S")) < 220000:
        print("run task")
        carsLen = len(cars)
        url = 'https://gateway-front.nio.com/c_webredirect/810002/api/v1/otd/mer/service-aggregation/homepage/noauth/secondHand'
        reponse = requests.post(url)
        jsons = json.loads(reponse.text)
        for items in jsons['resultData']:
            if items['type'] == 'single_goods_second_hand':
                for item in items['data']:
                    if 'state_text' not in item:
                        car = {
                                "title":item['title'],
                                "originPriceCash":item['price']['originPriceCash'],
                                "currentUserPriceCash": item['price']['currentUserPriceCash'],
                                "img" :item['img']
                            }
                        cars.add(json.dumps(car))

        if len(cars) > carsLen:
            # newCars = [];
            str = ''
            for car in list(cars):
                newCar = json.loads(car)
                # newCars.append(json.loads(car))
                str += '车辆名称(title):' + newCar['title'] + '\n'
                str += '原价(originPriceCash):' + newCar['originPriceCash'] + '\n'
                str += '当前用户价(currentUserPriceCash): ' + newCar['currentUserPriceCash'] + '\n'
                str += '图片(img):' + newCar['img'] + '\n'
            me = email_user
            msg = MIMEText(str)    # 邮件内容
            msg['Subject'] = '有新车上架,请您及时查看'    # 邮件主题
            msg['From'] = me    # 发送者账号
            msg['To'] = maillist    # 接收者账号列表
            smtp = smtplib.SMTP(email_host,port=25) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25
            smtp.login(email_user, email_pwd)   # 发送者的邮箱账号,密码
            smtp.sendmail(me, maillist, msg.as_string())
            # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
            smtp.quit() # 发送完毕后退出smtp
            # print ('email send success.')
            logging.debug('email send success')

if __name__ == '__main__':
    # 每分钟秒执行一次定时任务
    schedule.every().minutes.do(checkHand)
    while True:
        schedule.run_pending()
咻兔哔
咻兔哔·2020年1月17日

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处

推荐文章

Macos Firefox 开启垂直侧边栏和隐藏顶部标签
其他技术

Macos Firefox 开启垂直侧边栏和隐藏顶部标签

本文介绍了如何在Mac上安装并自定义浏览器的垂直标签页和样式。首先,通过插件市场安装`Sidebery`插件,然后创建`userChrome.css`文件并添加自定义样式。接着,配置`chrome`文件夹的位置,并将`userChrome.css`文件放置到该目录内。最后,根据需要调整标题栏、侧边栏、工具栏等元素的样式。

5月26日53
给项目的GIT目录瘦瘦身
其他技术

给项目的GIT目录瘦瘦身

文章介绍了一系列操作步骤,包括查找大文件、删除指定大文件、重新标记过期缓存文件、回收过期缓存、重新用命令查看文件大小以及重新提交瘦身远程仓库。这些步骤旨在优化存储空间和提高系统性能。

3月21日17
Jetbrains Idea 2019.3.5 不能识别GOROOT SDK版本的解决办法
其他技术

Jetbrains Idea 2019.3.5 不能识别GOROOT SDK版本的解决办法

Jetbrains IDE 2019.3.5无法识别GOROOT SDK版本的问题,解决方法如下:1.进入Go的sdk src/runtime/internal/sys目录。2.编辑zversion.go文件,将go1.17替换成当前版本。参考资料:- https://blog.csdn.net/u011243684/article/details/123865556- https://youtrack.jetbrains.com/issue/GO-11588#focus=Comments-27-5127829.0-0

5月3日9
Golang GUI开发之Webview
其他技术

Golang GUI开发之Webview

本文介绍了如何在Go语言中创建一个简易的跨平台Webview应用。作者首先尝试了多种UI框架和库,如fyne、go-gtk等,但发现它们要么无法实现理想的界面效果,要么缺少某些关键功能。在不断的尝试过程中,发现了`webview/webview`包,它提供了一个浏览器壳子,可以使用各种CSS框架或Vue技术来实现想要的效果。然而,`webview/webview`不支持键盘操作,例如`command+c`、`command+v`和`command+a`等快捷键。为此,作者找到了一个临时的解决方案:在初始化时注入监听代码,以允许用户复制和粘贴文本,选择文件等。最后,通过使用`dialog`包和`webview/webview`库,实现了一个输入框和文件夹选择器的功能,并确保了代码的简洁性。

6月22日17