在数字化购物时代,电商平台上商品价格的实时监控对于精明的消费者来说至关重要。我身边的一个购物爱好者,最近向我提出了一个有趣的想法:如果能有一个工具,定时获取京东指定商品的价格,并且把每天的价格保存在一个Excel中,那将是多么方便的事情。这个想法激发了我的兴趣,我认为这不仅是一个技术挑战,也是一个展示我编程技能的好机会。
(我看了下网上,很多类似软件都是收费的)
既然如此,那更得挑战一下自己了。
开始立项~
项目构想:我计划创建一个自动化脚本,能够定时检查京东上特定商品的价格,将价格变化记录保存,并在价格发生变化时通知用户。
技术路线图:我计划使用Python语言来实现这个想法,因为它简单易学且拥有强大的网络请求库和数据处理库。以下是我设想的技术路线:
-
商品页面请求: 通过京东商品的URL发送GET请求,获取商品页面的HTML内容。
-
解析价格信息: 使用
BeautifulSoup
库解析HTML内容,提取商品的当前价格。 -
价格比较与存储: 设计一个简单的数据库(使用SQLite),用来存储商品的历史价格,并进行价格比较。
-
Excel文件保存: 利用
pandas
库创建DataFrame,并使用openpyxl
作为引擎将数据写入Excel文件,记录每天的价格。 -
定时任务设置: 使用
schedule
库设定脚本每天定时运行,检查价格是否发生变化。 -
通知机制: 当检测到价格变化时,通过电子邮件或手机短信API发送通知。
获取京东商品价格的步骤,我封装在API(application program interface)中了。
请求示例(支持PHP、python、JAVA、curl等)
python请求代码如下
# coding:utf-8
"""
Compatible for python2.x and python3.x
requirement: pip install requests
"""
from __future__ import print_function
import requests
# 请求示例 url 默认请求参数已经做URL编码
url = "https://api-服务器.cn/jd/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=10335871600&domain_type=jd"
headers = {
"Accept-Encoding": "gzip",
"Connection": "close"
}
if __name__ == "__main__":
r = requests.get(url, headers=headers)
json_obj = r.json()
print(json_obj)
现在来测试一个数据看看,下面是京东商品详情页。可以看到,商品id:42778062410
接着我们请求API,传入商品id,可以获取到商品详情页的数据。
返回数据如下:
"item": {
"num_iid": "42778062410",
"title": "领奥智能儿童电动平衡车3-6-12岁体感10岁到15岁以上两轮自动平行车双轮成年人新款扭扭车 10吋越野高配蓝【蓝牙+炫光轮】",
"desc_short": "",
"price": "879.00",
"total_price": "",
"suggestive_price": "",
"orginal_price": "879.00",
"nick": "领奥旗舰店",
"num": "99",
"detail_url": "https://item.jd.com/42778062410.html#crumb-wrap",
"pic_url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/261563/19/30028/186193/67cc6953F5cc34110/3a5e3763c04a8329.jpg!q70.jpg",
"brand": "",
"brandId": "",
"rootCatId": "",
"cid": "28173",
"desc": "",
"item_imgs": [
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/261563/19/30028/186193/67cc6953F5cc34110/3a5e3763c04a8329.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/272280/22/20283/119872/67fbcdcdF7b0f0308/7849d59da29e2421.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/239352/6/7476/106571/661f420cF6398de5f/ad57dea3d0d53f5d.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/197178/8/21924/199814/624bdc66E89740df6/988ee4608a746b08.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/221052/8/9542/236573/61ee4339Ebfd6b731/6a6139db9089365e.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/107678/18/37220/64000/65018ce4F02f60996/d723f4218876c887.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/166308/11/27003/219066/61ee4338Ec61448d6/06aad831b0e72f2e.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/175069/17/18158/148700/60e03071E986b4c71/d99056d1f294a661.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/242586/39/2119/180830/659510c8Fc4e3104c/6d934e41807ab2af.jpg!q70.jpg"
},
{
"url": "http://m.360buyimg.com/mobilecms/s480x480_jfs/t1/186009/13/4827/264462/60a4bf35E6cfd0e73/8fd242f7fcf194ce.jpg!q70.jpg"
}
],
"item_weight": "",
"post_fee": "",
"freight": "",
"express_fee": "",
"ems_fee": "",
"shipping_to": "",
"video": "https://jvod.300hu.com/vod/product/e1c43789-0f9a-4fb9-8eb2-845df63a9f36/221f2c58d3c34c57a4e284a711a459fa.mp4?source=2&h265=h265/19366/fda0addb2da74c7db43dfad2594ede96.mp4",
"sample_id": "",
"props_name": "0:1:颜色:10吋炫光白【蓝牙+减震越野轮】;;0:2:颜色:10吋越野高配粉【蓝牙+炫光轮】;;0:3:颜色:10吋越野高配蓝【蓝牙+炫光轮】;;0:4:颜色:10吋越野加强蓝【蓝牙+四维灯】;;0:5:颜色:10吋越野加强白【蓝牙+四维灯】;;0:6:颜色:6.5吋高配白【平衡防抖+炫光轮】;;0:7:颜色:6.5吋高配蓝【平衡防抖+炫光轮】;;0:8:颜色:6.5吋旗舰蓝【APP防护+炫光轮】;;0:9:颜色:6.5吋升级白【平衡防抖+四维灯】;;0:10:颜色:6.5吋旗舰白【APP防护+炫光轮】;;0:11:颜色:10吋越野旗舰粉【APP+炫光轮】;;0:12:颜色:10吋越野旗舰白【APP+炫光轮】;;0:13:颜色:10吋越野旗舰蓝【APP+炫光轮】",
"prop_imgs": {
"prop_img": [
{
"properties": "0:1",
"url": "http://img11.360buyimg.com/n1/jfs/t1/273458/30/15615/142717/67f36511Feac04670/8263a7283d62b539.jpg"
},
{
"properties": "0:2",
"url": "http://img11.360buyimg.com/n1/jfs/t1/268350/13/30630/158775/67cc6951F236efc33/3d21c4d1aeecb9e9.jpg"
},
{
"properties": "0:3",
"url": "http://img11.360buyimg.com/n1/jfs/t1/261563/19/30028/186193/67cc6953F5cc34110/3a5e3763c04a8329.jpg"
},
{
"properties": "0:4",
"url": "http://img11.360buyimg.com/n1/jfs/t1/230082/21/31778/170173/67cc6955Fe832e79b/0de36ae25e8bbbb6.jpg"
},
{
"properties": "0:5",
"url": "http://img11.360buyimg.com/n1/jfs/t1/263096/21/30350/123251/67cc6958F7f58770e/13e8c98d3ef10b5f.jpg"
},
{
"properties": "0:6",
"url": "http://img11.360buyimg.com/n1/jfs/t1/263792/12/30300/130908/67cc8426F3629a7c4/8ee62f2844ba3de8.jpg"
},
{
"properties": "0:7",
"url": "http://img11.360buyimg.com/n1/jfs/t1/257136/3/30319/170626/67cc8429F2f1fa343/158068699f696482.jpg"
},
{
"properties": "0:8",
"url": "http://img11.360buyimg.com/n1/jfs/t1/238390/31/31825/177775/67cc8423Fd80c33f0/5fb4324dd08d6e09.jpg"
},
{
"properties": "0:9",
"url": "http://img11.360buyimg.com/n1/jfs/t1/256049/29/27472/119290/67cc691aF36b9f804/f49b4f428d625129.jpg"
},
{
"properties": "0:10",
"url": "http://img11.360buyimg.com/n1/jfs/t1/262159/39/30525/138070/67cc8421Fe094db94/5eda461bf8db58b8.jpg"
},
{
"properties": "0:11",
"url": "http://img11.360buyimg.com/n1/jfs/t1/265379/26/30648/165178/67cc6956F042850a4/184e43f35b8fc920.jpg"
},
{
"properties": "0:12",
"url": "http://img11.360buyimg.com/n1/jfs/t1/267686/26/30231/145795/67cc64d6Fda9c3e97/4710719ef12454b1.jpg"
},
{
"properties": "0:13",
"url": "http://img11.360buyimg.com/n1/jfs/t1/261019/23/30367/192548/67cc695aF411dc720/fffb76432b99cb38.jpg"
}
]
},
"props_imgs": {
"prop_img": [
{
"properties": "0:1",
"url": "http://img11.360buyimg.com/n1/jfs/t1/273458/30/15615/142717/67f36511Feac04670/8263a7283d62b539.jpg"
},
{
"properties": "0:2",
"url": "http://img11.360buyimg.com/n1/jfs/t1/268350/13/30630/158775/67cc6951F236efc33/3d21c4d1aeecb9e9.jpg"
},
{
"properties": "0:3",
"url": "http://img11.360buyimg.com/n1/jfs/t1/261563/19/30028/186193/67cc6953F5cc34110/3a5e3763c04a8329.jpg"
},
{
"properties": "0:4",
"url": "http://img11.360buyimg.com/n1/jfs/t1/230082/21/31778/170173/67cc6955Fe832e79b/0de36ae25e8bbbb6.jpg"
},
{
"properties": "0:5",
"url": "http://img11.360buyimg.com/n1/jfs/t1/263096/21/30350/123251/67cc6958F7f58770e/13e8c98d3ef10b5f.jpg"
},
{
"properties": "0:6",
"url": "http://img11.360buyimg.com/n1/jfs/t1/263792/12/30300/130908/67cc8426F3629a7c4/8ee62f2844ba3de8.jpg"
},
{
"properties": "0:7",
"url": "http://img11.360buyimg.com/n1/jfs/t1/257136/3/30319/170626/67cc8429F2f1fa343/158068699f696482.jpg"
},
{
"properties": "0:8",
"url": "http://img11.360buyimg.com/n1/jfs/t1/238390/31/31825/177775/67cc8423Fd80c33f0/5fb4324dd08d6e09.jpg"
},
{
"properties": "0:9",
"url": "http://img11.360buyimg.com/n1/jfs/t1/256049/29/27472/119290/67cc691aF36b9f804/f49b4f428d625129.jpg"
},
{
"properties": "0:10",
"url": "http://img11.360buyimg.com/n1/jfs/t1/262159/39/30525/138070/67cc8421Fe094db94/5eda461bf8db58b8.jpg"
},
{
"properties": "0:11",
"url": "http://img11.360buyimg.com/n1/jfs/t1/265379/26/30648/165178/67cc6956F042850a4/184e43f35b8fc920.jpg"
},
{
"properties": "0:12",
"url": "http://img11.360buyimg.com/n1/jfs/t1/267686/26/30231/145795/67cc64d6Fda9c3e97/4710719ef12454b1.jpg"
},
{
"properties": "0:13",
"url": "http://img11.360buyimg.com/n1/jfs/t1/261019/23/30367/192548/67cc695aF411dc720/fffb76432b99cb38.jpg"
}
]
},
"property_alias": "0:110吋炫光白【蓝牙+减震越野轮】;0:210吋越野高配粉【蓝牙+炫光轮】;0:310吋越野高配蓝【蓝牙+炫光轮】;0:410吋越野加强蓝【蓝牙+四维灯】;0:510吋越野加强白【蓝牙+四维灯】;0:66.5吋高配白【平衡防抖+炫光轮】;0:76.5吋高配蓝【平衡防抖+炫光轮】;0:86.5吋旗舰蓝【APP防护+炫光轮】;0:96.5吋升级白【平衡防抖+四维灯】;0:106.5吋旗舰白【APP防护+炫光轮】;0:1110吋越野旗舰粉【APP+炫光轮】;0:1210吋越野旗舰白【APP+炫光轮】;0:1310吋越野旗舰蓝【APP+炫光轮】",
"props": [
{
"name": "款式",
"value": "两轮"
},
{
"name": "喷雾类型",
"value": "无喷雾"
},
{
"name": "操控方式",
"value": "脚尖控制,重心控制"
},
{
"name": "发光类型",
"value": "7彩发光轮,电量显示灯,照明灯,转向灯,双色轮毂跑马灯"
},
{
"name": "是否可折叠",
"value": "不可折叠"
},
{
"name": "载重",
"value": "15-100kg"
},
{
"name": "变速档位",
"value": "3速"
},
{
"name": "适用人群",
"value": "儿童"
},
{
"name": "净重",
"value": "6-10kg"
},
{
"name": "手机连接功能",
"value": "蓝牙音乐,手机控制,灯光调节"
},
{
"name": "理论时速",
"value": "10-20km/h"
},
{
"name": "理论续航",
"value": "11-15km"
}
],
"total_sold": "",
"skus": {
"sku": [
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:1",
"properties_name": "0:1:颜色:10吋炫光白【蓝牙+减震越野轮】",
"quantity": "99",
"sku_id": "42778062408",
"sku_url": "https://item.jd.com/42778062408.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:2",
"properties_name": "0:2:颜色:10吋越野高配粉【蓝牙+炫光轮】",
"quantity": "99",
"sku_id": "42778062411",
"sku_url": "https://item.jd.com/42778062411.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:3",
"properties_name": "0:3:颜色:10吋越野高配蓝【蓝牙+炫光轮】",
"quantity": "99",
"sku_id": "42778062410",
"sku_url": "https://item.jd.com/42778062410.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:4",
"properties_name": "0:4:颜色:10吋越野加强蓝【蓝牙+四维灯】",
"quantity": "99",
"sku_id": "11631189484",
"sku_url": "https://item.jd.com/11631189484.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:5",
"properties_name": "0:5:颜色:10吋越野加强白【蓝牙+四维灯】",
"quantity": "99",
"sku_id": "11631189488",
"sku_url": "https://item.jd.com/11631189488.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:6",
"properties_name": "0:6:颜色:6.5吋高配白【平衡防抖+炫光轮】",
"quantity": "99",
"sku_id": "10043206428284",
"sku_url": "https://item.jd.com/10043206428284.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:7",
"properties_name": "0:7:颜色:6.5吋高配蓝【平衡防抖+炫光轮】",
"quantity": "99",
"sku_id": "10043206428285",
"sku_url": "https://item.jd.com/10043206428285.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:8",
"properties_name": "0:8:颜色:6.5吋旗舰蓝【APP防护+炫光轮】",
"quantity": "99",
"sku_id": "10043206428286",
"sku_url": "https://item.jd.com/10043206428286.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:9",
"properties_name": "0:9:颜色:6.5吋升级白【平衡防抖+四维灯】",
"quantity": "99",
"sku_id": "10906754503",
"sku_url": "https://item.jd.com/10906754503.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:10",
"properties_name": "0:10:颜色:6.5吋旗舰白【APP防护+炫光轮】",
"quantity": "99",
"sku_id": "11631189486",
"sku_url": "https://item.jd.com/11631189486.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:11",
"properties_name": "0:11:颜色:10吋越野旗舰粉【APP+炫光轮】",
"quantity": "99",
"sku_id": "10792430907",
"sku_url": "https://item.jd.com/10792430907.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:12",
"properties_name": "0:12:颜色:10吋越野旗舰白【APP+炫光轮】",
"quantity": "99",
"sku_id": "65645103738",
"sku_url": "https://item.jd.com/65645103738.html"
},
{
"price": "879.00",
"orginal_price": "879.00",
"properties": "0:13",
"properties_name": "0:13:颜色:10吋越野旗舰蓝【APP+炫光轮】",
"quantity": "99",
"sku_id": "65645103739",
"sku_url": "https://item.jd.com/65645103739.html"
}
]
},
"seller_id": "",
"sales": "",
"shop_id": "104179",
"_ddf": "szx",
"props_list": {
"0:1": "颜色:10吋炫光白【蓝牙+减震越野轮】",
"0:2": "颜色:10吋越野高配粉【蓝牙+炫光轮】",
"0:3": "颜色:10吋越野高配蓝【蓝牙+炫光轮】",
"0:4": "颜色:10吋越野加强蓝【蓝牙+四维灯】",
"0:5": "颜色:10吋越野加强白【蓝牙+四维灯】",
"0:6": "颜色:6.5吋高配白【平衡防抖+炫光轮】",
"0:7": "颜色:6.5吋高配蓝【平衡防抖+炫光轮】",
"0:8": "颜色:6.5吋旗舰蓝【APP防护+炫光轮】",
"0:9": "颜色:6.5吋升级白【平衡防抖+四维灯】",
"0:10": "颜色:6.5吋旗舰白【APP防护+炫光轮】",
"0:11": "颜色:10吋越野旗舰粉【APP+炫光轮】",
"0:12": "颜色:10吋越野旗舰白【APP+炫光轮】",
"0:13": "颜色:10吋越野旗舰蓝【APP+炫光轮】"
},
"seller_info": {
"level": "",
"shop_type": "",
"user_num_id": -1,
"cid": "",
"delivery_score": "4.7",
"item_score": "4.9",
"score_p": "4.9",
"zhuy": "https://mall.jd.com/index-104179.html",
"search_id": "",
"nick": "领奥旗舰店"
},
"brand_id": "",
"root_catid": "27508",
"main_sku_id": "42778062410",
"desc_img": [],
"props_img": {
"0:1": "http://img11.360buyimg.com/n1/jfs/t1/273458/30/15615/142717/67f36511Feac04670/8263a7283d62b539.jpg",
"0:2": "http://img11.360buyimg.com/n1/jfs/t1/268350/13/30630/158775/67cc6951F236efc33/3d21c4d1aeecb9e9.jpg",
"0:3": "http://img11.360buyimg.com/n1/jfs/t1/261563/19/30028/186193/67cc6953F5cc34110/3a5e3763c04a8329.jpg",
"0:4": "http://img11.360buyimg.com/n1/jfs/t1/230082/21/31778/170173/67cc6955Fe832e79b/0de36ae25e8bbbb6.jpg",
"0:5": "http://img11.360buyimg.com/n1/jfs/t1/263096/21/30350/123251/67cc6958F7f58770e/13e8c98d3ef10b5f.jpg",
"0:6": "http://img11.360buyimg.com/n1/jfs/t1/263792/12/30300/130908/67cc8426F3629a7c4/8ee62f2844ba3de8.jpg",
"0:7": "http://img11.360buyimg.com/n1/jfs/t1/257136/3/30319/170626/67cc8429F2f1fa343/158068699f696482.jpg",
"0:8": "http://img11.360buyimg.com/n1/jfs/t1/238390/31/31825/177775/67cc8423Fd80c33f0/5fb4324dd08d6e09.jpg",
"0:9": "http://img11.360buyimg.com/n1/jfs/t1/256049/29/27472/119290/67cc691aF36b9f804/f49b4f428d625129.jpg",
"0:10": "http://img11.360buyimg.com/n1/jfs/t1/262159/39/30525/138070/67cc8421Fe094db94/5eda461bf8db58b8.jpg",
"0:11": "http://img11.360buyimg.com/n1/jfs/t1/265379/26/30648/165178/67cc6956F042850a4/184e43f35b8fc920.jpg",
"0:12": "http://img11.360buyimg.com/n1/jfs/t1/267686/26/30231/145795/67cc64d6Fda9c3e97/4710719ef12454b1.jpg",
"0:13": "http://img11.360buyimg.com/n1/jfs/t1/261019/23/30367/192548/67cc695aF411dc720/fffb76432b99cb38.jpg"
},
"shop_item": [],
"relate_items": []
},