用 Python 制作商品历史价格查询,别踩坑!
一年一度的双十一就快到了,各种砍价、盖楼、挖现金的口令将在未来一个月内充斥朋友圈、微信群中。玩过多次双十一活动的小编表示一顿操作猛如虎,一看结果2毛5。浪费时间不说而且未必得到真正的优惠,双十一电商的“明降暗升”已经是默认的潜规则了。打破这种规则很简单,可以用 Python 写一个定时监控商品价格的小工具。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
python免费学习资料以及群交流解答点击即可加入
思路
- 第一步抓取商品的价格存入 Python 自带的 SQLite 数据库
- 每天定时抓取商品价格
- 使用 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 解决生活中的小小痛点,让钱包不再干瘪。
用 Python 制作商品历史价格查询,别踩坑!相关推荐
- 【python】制作商品历史价格查询
前言 一.思路 1.抓取商品的价格存入 Python 自带的 SQLite 数据库 2.每天定时抓取商品价格 3.使用 pyecharts 模块绘制价格折线图,让低价一目了然 二.步骤 1.抓取京东价 ...
- 商品历史价格查询API
商品历史价格查询API 1) 请求地址 https://bj.api.yhmai.cn/router?app_id=8ab9ea84d196699d&method=query.good.his ...
- asd 商品历史价格查询
购物小技巧:使用asd轻松查询 想买的商品 历史价格 设置提醒 最低价时入手 省心省钱购 demo: 只需要在相应的tb/jd对应域名后面输入asd即可
- iPhone清理喇叭灰尘_厉害了,iPhone 专用的网购商品历史最低价查询工具
最近正值618购物节,很多商品都在打特价,今天分享两个网购必备的防坑小妙招.借助下面的两个工具,帮你买到真正实惠的宝贝.1商品历史价格查询工具这个快捷指令可以一键查询某一款商品的历史价格变动,让我们知 ...
- 实战各大平台商品比价--Python 爬取过客网商品历史价格(30天)
#! usr/bin/env python # -*- coding:utf-8 -*- __author__="JUNHAN" 环境: Python3.6.5 1.导入第三方库 ...
- 淘宝商品历史价格接口/商品历史价走势接口代码对接分享
一.淘宝商品历史价格接口/商品历史价走势接口代码如下: 点击获取key和secret 1.请求参数: 请求参数:num_iid=584458528092 参数说明:num_iid:商品id 2.响应参 ...
- 淘宝商品历史价格API接口 调用说明及功能介绍
淘宝商品历史价格API是一款可以帮助用户获取淘宝商品历史价格数据的接口.通过该接口,用户可以轻松地获取某个商品在过去一段时间中的价格趋势和波动情况,以便更好地了解该商品的市场走势和价值变化情况. 该A ...
- js怎么实现二维码一分钟后失效_【js脚本】网购历史价格查询 1.3 更新 | 打假618商家虚假促销,自动查找隐藏优惠券,网购不再被套路!...
嗨,老铁们好久不见,有没有想我呀?马上又要到一年一度的618网购的日子了,打假网购虚假活动商品怎么能少的了[网购历史价格查询]呢.昨天看了看后台留言看到了有朋友说这个js版的历史价格查询失效了,于是小 ...
- 618查看商品历史价格的方法
用 法: 在地址栏中的电商域名后加入字母asd即可查询当前商品历史价格,如: 第一步: 正常浏览商品,假设商品原链接为: https://item.jd.com/3505714.html 第二步: 在 ...
- 电商API分享:获取淘宝商品历史价格api调用示例 参数说明
在网络购物中,TAO宝是相信许多人的首选平台之一,而对于一个谨慎的购物者来说,价格的变化是非常重要的.所以获取淘宝商品历史价格,可以帮助购物者更好地作出决策,实现理性消费.获取淘宝商品历史价格主要能帮 ...
最新文章
- inum在linux中含义,linux
- 当博导10年,一博士生跟了我7年,我是悲喜交加...
- 浅析丨AI安防产品发展现状与趋势分析
- selenium webdriver(python)_selenium、webdriver及浏览器的关系及对应版本安装
- oracle12 pl/sql
- Linux中断(interrupt)子系统之五:软件中断(softIRQ)
- 虚拟机安装Vmware-tools
- spring之IOC和DI关系
- 如何在Eclipse配置PyDev插件
- 测试电脑电源是否正常的办法
- 重载全局new/delete实现内存检测
- 双调欧几里得旅行商问题_遗传模拟退火算法求解旅行商(TSP)问题MATLAB代码讲解...
- 数据库系统概述之数据库的安全性
- 离散数学及其应用 第二章:计数问题
- rtl驱动 ubuntu 禁用_Ubuntu如何安装rtl8822be驱动
- php 依赖倒置原则,PHP:依赖注入,控制反转,依赖倒置原则
- C++中exchange()函数的使用方法(例题)
- KGB知识图谱成功落地金融行业
- 4G模块 EC03-DNC的常用AT指令操作及模块访问内网方法
- 由多个库组成的 Android Jetpack,到底有多厉害?
热门文章
- 有趣的隐式图模型——USACO CONTEST FEB07 白银莲花池
- 电脑计算机无法找到脚本文件夹,电脑开机老是提醒无法找到脚本文件的处理方法...
- 667. 优美的排列 II
- 新浪微博架构和FEED架构分析--人人架构
- Mac mini7.1 2014年末 安装单windows 10系统
- Your binary is not optimized for iPhone 5” (ITMS-90096) when submitting
- android 7.0读写 sdcard,Android 学习笔记之SDCard读写
- KDD2019 | 开放学术图谱 (OAG): 大规模知识图谱异构实体对齐
- 怎么使qq推广效果最大化
- OSPF笔记[DR与BDR]