文 | 某某白米饭

来源:Python 技术「ID: pythonall」

一年一度的双十一就快到了,各种砍价、盖楼、挖现金的口令将在未来一个月内充斥朋友圈、微信群中。玩过多次双十一活动的小编表示一顿操作猛如虎,一看结果2毛5。浪费时间不说而且未必得到真正的优惠,双十一电商的“明降暗升”已经是默认的潜规则了。打破这种规则很简单,可以用 Python 写一个定时监控商品价格的小工具。

思路

  1. 第一步抓取商品的价格存入 Python 自带的 SQLite 数据库

  2. 每天定时抓取商品价格

  3. 使用 pyecharts 模块绘制价格折线图,让低价一目了然

抓取京东价格

从商品详情的页面中打开 F12 控制面板,找到包含 p.3 的链接,在旁边的 preview 面板中可以看到当前商品价格

def get_jd_price(skuId):

sku_detail_url = 'http://item.jd.com/{}.html'sku_price_url = 'https://p.3.cn/prices/get?type=1&skuid=J_{}'r = requests.get(sku_detail_url.format(skuId)).contentsoup = BeautifulSoup(r, 'html.parser', from_encoding='utf-8')sku_name_div = soup.find('div', class_="sku-name")if not sku_name_div:print('您输入的商品ID有误!')returnelse:sku_name = sku_name_div.text.strip()r = requests.get(sku_price_url.format(skuId))price = json.loads(r.text)[0]['p']data = {'sku_id': skuId,'sku_name': sku_name,'price': price}return data

把抓取的价格存入 sqlite 数据库,使用 PyCharm 的 Database 功能创建一个 sqlite 数据库

最终将数据插入到数据库

# 新增
def insert(data):conn = sqlite3.connect('price.db')c = conn.cursor()sql = 'INSERT INTO price (sku_id,sku_name,price) VALUES ("{}", "{}", "{}")'.format(data.get("sku_id"), data.get("sku_name"), data.get('price') )c.execute(sql)conn.commit()conn.close()# 查询
def select(sku_id):conn = sqlite3.connect('price.db')c = conn.cursor()sql = 'select sku_id, sku_name, price, time from price where sku_id = "{}" order by time asc'.format(sku_id)cursor = c.execute(sql)datas = []for row in cursor:data = {'sku_id': row[0],'sku_name': row[1],'price': row[2],'time': row[3]}datas.append(data)conn.close()return datas

示例结果

计划任务

使用轻量级的 schedule 模块每天早上 10 点抓取京东价格这一步骤

安装 schedule 模块

pip install schedule
def run_price_job(skuId):# 使用不占主线程的方式启动 计划任务def run_continuously(interval=1):cease_continuous_run = threading.Event()class ScheduleThread(threading.Thread):@classmethoddef run(cls):while not cease_continuous_run.is_set():schedule.run_pending()time.sleep(interval)continuous_thread = ScheduleThread()continuous_thread.start()return cease_continuous_run# 每天10点运行,get_jd_price:任务方法,skuId:任务方法的参数schedule.every().day.at("10:00").do(get_jd_price, skuId=skuId)run_continuously()

查看历史价格

使用 pytharts 模块绘制折线图,直观的查看每一天的价格差异


datas = select(skuId)def line(datas):x_data = []y_data = []for data in datas:x_data.append(data.get('time'))y_data.append(data.get('price'))(Line().add_xaxis(x_data).add_yaxis(datas[0].get('sku_name'), y_data, is_connect_nones=True).render("商品历史价格.html"))

总结

本文抓取了京东商城的价格,小伙伴们也可以修个脚本抓取淘宝的价格。使用 Python 解决生活中的小小痛点,让钱包不再干瘪。

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式】

识别文末二维码,回复:201022

用 Python 制作商品历史价格查询相关推荐

  1. 【python】制作商品历史价格查询

    前言 一.思路 1.抓取商品的价格存入 Python 自带的 SQLite 数据库 2.每天定时抓取商品价格 3.使用 pyecharts 模块绘制价格折线图,让低价一目了然 二.步骤 1.抓取京东价 ...

  2. 商品历史价格查询API

    商品历史价格查询API 1) 请求地址 https://bj.api.yhmai.cn/router?app_id=8ab9ea84d196699d&method=query.good.his ...

  3. asd 商品历史价格查询

    购物小技巧:使用asd轻松查询 想买的商品 历史价格 设置提醒 最低价时入手 省心省钱购 demo: 只需要在相应的tb/jd对应域名后面输入asd即可

  4. iPhone清理喇叭灰尘_厉害了,iPhone 专用的网购商品历史最低价查询工具

    最近正值618购物节,很多商品都在打特价,今天分享两个网购必备的防坑小妙招.借助下面的两个工具,帮你买到真正实惠的宝贝.1商品历史价格查询工具这个快捷指令可以一键查询某一款商品的历史价格变动,让我们知 ...

  5. 实战各大平台商品比价--Python 爬取过客网商品历史价格(30天)

    #! usr/bin/env python # -*- coding:utf-8 -*- __author__="JUNHAN" 环境: Python3.6.5 1.导入第三方库 ...

  6. 淘宝商品历史价格接口/商品历史价走势接口代码对接分享

    一.淘宝商品历史价格接口/商品历史价走势接口代码如下: 点击获取key和secret 1.请求参数: 请求参数:num_iid=584458528092 参数说明:num_iid:商品id 2.响应参 ...

  7. 淘宝商品历史价格API接口 调用说明及功能介绍

    淘宝商品历史价格API是一款可以帮助用户获取淘宝商品历史价格数据的接口.通过该接口,用户可以轻松地获取某个商品在过去一段时间中的价格趋势和波动情况,以便更好地了解该商品的市场走势和价值变化情况. 该A ...

  8. js怎么实现二维码一分钟后失效_【js脚本】网购历史价格查询 1.3 更新 | 打假618商家虚假促销,自动查找隐藏优惠券,网购不再被套路!...

    嗨,老铁们好久不见,有没有想我呀?马上又要到一年一度的618网购的日子了,打假网购虚假活动商品怎么能少的了[网购历史价格查询]呢.昨天看了看后台留言看到了有朋友说这个js版的历史价格查询失效了,于是小 ...

  9. 618查看商品历史价格的方法

    用 法: 在地址栏中的电商域名后加入字母asd即可查询当前商品历史价格,如: 第一步: 正常浏览商品,假设商品原链接为: https://item.jd.com/3505714.html 第二步: 在 ...

  10. 电商API分享:获取淘宝商品历史价格api调用示例 参数说明

    在网络购物中,TAO宝是相信许多人的首选平台之一,而对于一个谨慎的购物者来说,价格的变化是非常重要的.所以获取淘宝商品历史价格,可以帮助购物者更好地作出决策,实现理性消费.获取淘宝商品历史价格主要能帮 ...

最新文章

  1. android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法
  2. 3.Tomact部署webapp
  3. php postgresql多条,PHP操作Postgresql封装类与应用完整实例
  4. 模型验证的常用武器k-s
  5. c++ 遍历所有点且距离最短_L3图论第08课 图的遍历
  6. 车位预定查询html格式,停车场车位预定方法
  7. Docker基本组成 和 基本命令
  8. ServletActionContext.getRequest().getSession() 和 ActionContext.getContext().getSession()的区别
  9. java实现红包要多少钱_java实现红包的分配算法
  10. CSDN中图片缩放与居中
  11. 新闻网页制作源代码_Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的
  12. 【文献翻译】基于CVSS的IT系统网络安全风险定量评估方法-A Quantitative CVSS-Based Cyber Security Risk Assessment Methodology
  13. 基于PyQt5实时曲线绘制源代码和串口调试助手源代码带文件保存加载十六进制显示Python两个工程的源代码
  14. 【粗解】【通信编码】卷积编码器的简单实现
  15. 经典vim插件功能说明、安装方法和使用方法介绍
  16. oracle jdbc流式读取,在 Oracle Database 适配器中流式传输大型对象数据类型 - BizTalk Server | Microsoft Docs...
  17. 常见的压力面试题及面试技巧
  18. MySQL运维(二)MySQL分库分表概念及实战、读取分离详解
  19. python学习笔记(空气质量指数)
  20. 估值超过3个小米!独角巨兽蚂蚁金服养成记

热门文章

  1. OSChina 周六乱弹 ——因为四毛钱,友谊的小船就翻了
  2. 8421码转16进制的c语言,将8421BCD码转换为十进制数(转)
  3. VirtualApp hook so及activity回调
  4. 每日方法分享:免费一键抠图方法都有哪些?
  5. 黑猴子的家:JavaWeb 之 CSS
  6. ERROR: sdl2 requested but not found
  7. 品一品,捋一捋,回调函数获取异步操作数据
  8. 捋一捋字符串和字节序列的关系
  9. 关于srand函数的疑问
  10. Axure RP 认识