用 Python 制作商品历史价格查询

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

思路

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

抓取京东价格

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

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)).content
    soup = BeautifulSoup(r, 'html.parser', from_encoding='utf-8')
    sku_name_div = soup.find('div', class_="sku-name")
    if not sku_name_div:
        print('您输入的商品ID有误!')
        return
    else:
        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 数据库

15.jpg16.jpg


最终将数据插入到数据库

# 新增
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


示例结果


17.jpg

计划任务

使用轻量级的 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):
            @classmethod
            def 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")
    )


18.jpg


总结

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


目录
相关文章
|
12天前
|
存储 小程序 Python
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
### 农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序 该程序通过`lunardate`库实现公历与农历的日期转换,支持闰月和跨年处理,用户输入农历节日名称后,可准确计算距离该节日还有多少天。功能包括农历节日查询、倒计时计算等。欢迎使用! (239字符)
147 86
|
4天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
28天前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
91 5
|
2月前
|
存储 数据采集 数据库
用 Python 爬取淘宝商品价格信息时需要注意什么?
使用 Python 爬取淘宝商品价格信息时,需注意法律和道德规范,遵守法律法规和平台规定,避免非法用途。技术上,可选择 Selenium 和 Requests 库,处理反爬措施如 IP 限制、验证码识别和请求频率控制。解析页面数据时,确定数据位置并清洗格式。数据存储可选择 CSV、Excel、JSON 或数据库,定期更新并去重。还需进行错误处理和日志记录,确保爬虫稳定运行。
|
2月前
|
数据采集 Web App开发 iOS开发
如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
本文介绍了使用 Python 爬虫技术获取淘宝天猫商品价格信息的两种方法。方法一使用 Selenium 模拟浏览器操作,通过定位页面元素获取价格;方法二使用 Requests 和正则表达式直接请求页面内容并提取价格。每种方法都有详细步骤和代码示例,但需注意反爬措施和法律法规。
|
3月前
|
数据采集 人工智能 自然语言处理
AI Agent 金融助理0-1 Tutorial 利用Python实时查询股票API的FinanceAgent框架构建股票(美股/A股/港股) AI Finance Agent
金融领域Finance AI Agents方面的工作,发现很多行业需求和用户输入的 query都是和查询股价/行情/指数/财报汇总/金融理财建议相关。如果需要准确的 金融实时数据就不能只依赖LLM 来生成了。常规的方案包括 RAG (包括调用API )再把对应数据和prompt 一起拼接送给大模型来做文本生成。稳定的一些商业机构的金融数据API基本都是收费的,如果是以科研和demo性质有一些开放爬虫API可以使用。这里主要介绍一下 FinanceAgent,github地址 https://github.com/AI-Hub-Admin/FinanceAgent
|
2月前
|
测试技术 API 数据安全/隐私保护
Python连接到Jira实例、登录、查询、修改和创建bug
通过使用Python和Jira的REST API,可以方便地连接到Jira实例并进行各种操作,包括查询、修改和创建Bug。`jira`库提供了简洁的接口,使得这些操作变得简单易行。无论是自动化测试还是开发工作流的集成,这些方法都可以极大地提高效率和准确性。希望通过本文的介绍,您能够更好地理解和应用这些技术。
224 0
|
3月前
|
数据采集 存储 监控
如何使用 Python 爬取商品数据
如何使用 Python 爬取京东商品数据
85 3
|
3月前
|
数据采集 存储 监控
如何使用 Python 爬取京东商品数据
如何使用 Python 爬取京东商品数据
158 2
|
3月前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
32 1