如何使用Python开发价格比较工具

各种商品的在线购物已不再是一种奢侈,而如今已成为一种必需品。将所需的产品送到家门口,使消费者更轻松地购物。结果,每年都会弹出几个利基电子商务或通用购物网站。这种趋势不仅限于某些特定地区,而是一种全球现象,因为由于交通拥堵和易于购买,越来越多的人更喜欢在线购物而不是光顾商店。这就是为什么预测到2021年,总体15.5%的销售额将通过在线网站产生的原因。自电子商务蓬勃发展以来,消费者现在已经从销售相同产品的各个网站上获得了最佳交易的知识。他们将通过访问多个站点来找到最优惠的价格并比较价格以找到最适合他们的价格。在这种动态情况下,价格比较工具可轻松用于企业,可用于比较竞争对手公司的价格以报价有竞争力的公司。什么是价格比较工具?价格比较工具可让您跟踪商品的价格跨不同来源的产品,从而帮助您随时了解竞争对手的情况。它也可以帮助企业知道某种产品的价格何时比您自己的目标价格上涨或下跌。数据源要使价格监视工具正常工作,必须拥有可靠的来源。数据可以任何格式来自任何来源。对于这篇文章,我们正在比较我们从亚马逊,eBay和沃尔玛获得的产品价格。数据为JSON格式。我们的示例数据如下所示:(
  {
    “ last_visited”:“ 2018-01-30T13:38:01”,
    “名称”:“ PUMA男子Evospeed 17.4 TT足球鞋”,
    “ amazon_price”:36.94,
    “ ebay_price”:37,
    “ walmart_price”:37,
    “ amazon_url”:“ https://www.amazon.com/PUMA-Evospeed-Soccer-Ultra-Yellow-Peacoat-Orange/dp/B01J5LEMZI/”,
    “ ebay_url”:“ https://www.ebay.com/itm/PUMA-Mens-Evospeed-17-4-Tt-Soccer-Shoe/302471489090”,
    “ walmart_url”:“ https://www.walmart.com/ip/PUMA-Men-s-Evospeed-17-4-Tt-Soccer-Shoe/587074448”,
    “描述”:“新的evospeed 17.4是一款适用于各个级别球员的高性能足球鞋。鞋面柔软轻巧的合成革可保持靴子轻巧,舒适并确保耐用性。轻巧的外底在抓地力,稳定性之间达到了完美的平衡。 PUMA是一个成功地融合了运动,生活方式和时尚影响力的全球运动品牌。PUMA独特的行业视角通过技术创新和革命性设计为运动生活方式的鞋类,服装和配饰带来了意想不到的效果。”,
    “品牌”:“ PUMA”,
    “ image”:“ https://images-na.ssl-images-amazon.com/images/I/61v1mylcAqL._UL1500_.jpg”
  },
  {
    “ last_visited”:“ 2018-01-30T13:38:07”,
    “名称”:“巴黎欧莱雅护肤Revitalift Cicacream面部保湿霜”,
    “ amazon_price”:13.97,
    “ ebay_price”:13.99,
    “ walmart_price”:13.97,
    “ amazon_url”:“ https://www.amazon.com/LOreal-Paris-Revitalift-Cicacream-Moisturizer/dp/B074MBDRHW”,
    “ ebay_url”:“ https://www.ebay.com/itm/LOREAL-Paris-NEW-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair-ORIGINAL/112715734801”,
    “ walmart_url”:“ https://www.walmart.com/ip/L-Or-al-Paris-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair/519350834”,
    “描述”:“皮肤的水分屏障随着年龄的增长而减弱,导致更大的水分流失,更明显的皱纹和紧致度下跌。轻巧的保护性乳霜由有效的抗皱成分Pro-Retinol和所用草药Centella Asiatica配制而成加强和修复皮肤屏障,以帮助抵抗可见的线条,紧致度下跌和衰老的迹象,削弱的皮肤屏障会加剧该现象;立即看到可见的结果:皮肤感觉更健康,更柔软,更光滑,更柔软。水分明显增加;皮肤屏障更强,有助于抵抗衰老迹象;两周内:细纹明显减少;紧致和弹性看起来明显改善;四周内:皱纹变得不明显;清晰度和色调得到改善;皮肤散发出光彩皮肤继续保持柔软,光滑,健康的外观和感觉。”,
    “品牌”:“巴黎欧莱雅”,
    “ image”:“ https://images-na.ssl-images-amazon.com/images/I/71Ff2vn4vjL._SL1500_.jpg”
  },
  {
    “ last_visited”:“ 2018-01-30T13:38:12”,
    “ name”:“ Adidas为男士准备的Adidas Dynamic Pulse”,
    “ amazon_price”:6.96,
    “ ebay_price”:18.99,
    “ walmart_price”:7
    “ amazon_url”:“ https://www.amazon.com/Adidas-Dynamic-Toilette-3-4-Ounce-Bottle/dp/B000VON5F2/”,
    “ ebay_url”:“ https://www.ebay.com/itm/Adidas-DYNAMIC-PULSE-Cologne-for-Men-3-4-oz-edt-3-3-Spray-New-in-BOX/252837623533 ”,
    “ walmart_url”:“ https://www.walmart.com/ip/Adidas-Dynamic-Pulse-for-Men-3-4-oz-EDT/28664356”,
    “描述”:“ ADIDAS DYNAMIC PULSE由阿迪达斯设计公司于1997年推出,是一款男士香水,融合了柑橘,雪松和薄荷的新鲜香气,并带有低调的甜美水果,芬芳的木材和零陵香豆。建议在白天使用。使用任何香水时,请注意有几个因素会影响皮肤的自然气味,进而影响气味的散发方式,例如您的情绪,压力水平,年龄,人体化学,饮食和当前的药物都可能会改变您所穿的香水。同样,干燥或油性皮肤等因素甚至可能影响香精使用后持续的时间”,
    “ brand”:“ adidas”,
    “ image”:“ https://images-na.ssl-images-amazon.com/images/I/41%2BAnOP5nbL.jpg”
  },
  {
    “ last_visited”:“ 2018-01-30T13:38:19”,
    “名称”:“佳能EOS Rebel T6数码单反相机”,
    “ amazon_price”:449,
    “ ebay_price”:449,
    “ walmart_price”:449,
    “ amazon_url”:“ https://www.amazon.com/Canon-Digital-Camera-18-55mm-3-5-5-6/dp/B01CO2JPYS”,
    “ ebay_url”:“ https://www.ebay.com/itm/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens/232596041502”,
    “ walmart_url”:“ https://www.walmart.com/ip/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens-Black/50820749”,
    “ description”:“”,
    “品牌”:“佳能”,
    “图片”:“ https://images-na.ssl-images-amazon.com/images/I/81YszfZS8%2BL._SL1500_.jpg”
  },
  {
    “ last_visited”:“ 2018-01-30T13:38:25”,
    “名称”:“ Woodland Fox Critter 36'Mylar Balloon”,
    “ amazon_price”:5.49,
    “ ebay_price”:6.49,
    “ walmart_price”:7.6,
    “ amazon_url”:“ https://www.amazon.com/Woodland-Fox-Critter-Mylar-Balloon/dp/B00S9TKVYO”,
    “ ebay_url”:“ https://www.ebay.com/itm/Woodland-Critters-Fox-36-inch-Foil-Balloon/132058119680”,
    “ walmart_url”:“ https://www.walmart.com/ip/Woodland-Fox-Foil-Balloon/43350002”,
    “ description”:“用可爱的林地狐狸小动物气球庆祝任何场合36 ”林地小动物狐狸形状的铝箔气球。“,
    “ brand”:“ Betallic”,
    “ image”:“ https://images-na.ssl-images-amazon.com/images/I/71Z9bG-BzuL._SL1500_.jpg”
  }
)与脚本相关的字段是amazon_price,ebay_price和Walmart_price。让我们不必担心JSON的构造方式,假设有一些爬虫正在运行以从这些站点抓取数据并将其存储在某些数据库中。我们的数据已经准备就绪,可以开始开发了。价格比较工具的开发Python 3.x,我们将使用JSON库来解析JSON和进一步处理。该工具将打印提供最有利可图的报价的网站的产品名称和价格。为了简单起见,我从文本文件中获取JSON数据。为了解析JSON,我们将需要导入内置的JSON库。import json现在,我们必须读取价格数据,为此,代码片段调用open()从文件中读取JSON内容。

如果__name__ =='__main__':
    price_data =无
    价格=()
    与open('data.json',encoding ='utf8')为f:
        price_data = f.read()

    如果price_data不为None:
        json_price_data = json.loads(price_data)读取JSON数据后,我们需要将其转换为Python的内置数据结构,为此代码调用json.loads()方法,该方法将JSON字符串转换为字典或词典列表,由于要确定条目的数量,因此目标是查找哪个商店以最便宜的价格出售产品,因此相关商店的价格信息存储在amazon_price,ebay_price和walmart_price密钥中。以及产品和商店名称等相关详细信息。我们需要迭代价格清单项并找到每种产品的最小值。对于json_price_data中的d:
            price.append({'name':d('name'),'price':float(d('amazon_price')),'url':d('amazon_url')})
            price.append({'name':d('name'),'price':float(d('walmart_price')),'url':d('walmart_url')})
            price.append({'name':d('name'),'price':float(d('ebay_price')),'url':d('ebay_url')})
            minPricedItem = min(price,key = lambda x:x('price'))
            打印(minPricedItem)
            打印('================'
            price =()我们使用lambda并设置min()的键来确保比较价格字段。运行时会产生以下输出:{'price':36.94,'url':'https://www.amazon.com/PUMA-Evospeed-Soccer-Ultra-Yellow-Peacoat-Orange/dp/B01J5LEMZI/' ,
‘名称’:“ PUMA Men's Evospeed 17.4 TT足球鞋”}

=================

{“价格”:13.97,“网址”:“ https://www.amazon.com/LOreal-Paris-Revitalift-Cicacream-Moisturizer/dp/B074MBDRHW”,
‘名称’:“欧莱雅巴黎护肤Revitalift Cicacream面部保湿霜”}

=================

{“价格”:6.96,“网址”:“ https://www.amazon.com/Adidas-Dynamic-Toilette-3-4-Ounce-Bottle/dp/B000VON5F2/”,
‘名称’:‘Adidas Dynamic Pulse By Adidas For Men’}

=================

{“价格”:449,“网址”:“ https://www.amazon.com/Canon-Digital-Camera-18-55mm-3-5-5-6/dp/B01CO2JPYS”,
‘名称’:‘佳能EOS Rebel T6数码单反相机’}

=================

{“价格”:5.49,“网址”:“ https://www.amazon.com/Woodland-Fox-Critter-Mylar-Balloon/dp/B00S9TKVYO”,
‘name’:“ Woodland Fox Critter 36′Mylar Balloon”}这似乎有效,但格式无法代表。让我们对其进行一些更改:对于json_price_data中的d:
            price.append({'name':d('name'),'price':d('amazon_price'),'url':d('amazon_url')})
            price.append({'name':d('name'),'price':d('walmart_price'),'url':d('walmart_url')})
            price.append({'name':d('name'),'price':d('ebay_price'),'url':d('ebay_url')})
            minPricedItem = min(price,key = lambda x:float(x('price')))
            store_name =''
            #根据网址选择商店名称
            如果minPricedItem('url')。lower()中的'amazon':
                store_name ='亚马逊'
            minPricedItem('url')。lower()中的elif'walmart':
                store_name ='亚马逊'
            minPricedItem('url')。lower()中的elif'ebay':
                store_name ='eBay'
            print('{}的价格很便宜,价格为{}。价格为${}'。format(minPricedItem('name'),store_name,
                                                                                 minPricedItem('price')))
            price =()现在,当您运行它时,它会显示以下输出:PUMA Men's Evospeed 17.4 TT足球鞋在亚马逊上可以低价购买。价格为$36.94L′′Oreal Paris护肤Revitalift Cicacream面部保湿霜在亚马逊上有低价出售。价格为$13.97,阿迪达斯男装的adidas Dynamic Pulse由Adidas For Men提供。价格为$6.96佳能EOS Rebel T6数码单反相机在亚马逊上有低价出售。价格是449美元。亚马逊有伍德兰·福克斯小动物36英寸聚酯薄膜气球的便宜价格。价格是$5.49就是这样您可以定期运行此脚本,以始终获得产品的更新价格。

资讯来源:由0x资讯编译自HACKERNOON。版权归作者所有,原文链接:https://hackernoon.com/how-to-develop-a-price-comparison-tool-in-python-jw4632al。未经许可,不得转载
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢