python 京东 价格监控_【Python】京东商品价格监控

import requests,json,re,winsound,time

class Stock(object):

def __init__(self):

self.province_dict={value:key for key,value in {

1:'北京',2:'上海',3:'天津',4:'重庆',5:'河北',6:'山西',7:'河南',8:'辽宁',9:'吉林',10:'黑龙江',

11:'内蒙古',12:'江苏',13:'山东',14:'安徽',15:'浙江',16:'福建',17:'湖北',18:'湖南',19:'广东',20:'广西',

21:'江西',22:'四川',23:'海南',24:'贵州',25:'云南',26:'西藏',27:'陕西',28:'甘肃',29:'青海',30:'宁夏',

31:'新疆',32:'台湾',84:'钓鱼岛',52993:'港澳'

}.items()}

self.price_dict={

'PC端':'https://p.3.cn/prices/get?type=1&skuid=J_{}',

'APP端':'https://pm.3.cn/prices/mgets?origin=2&skuIds={}',

'微信端':'https://pe.3.cn/prices/mgets?origin=5&skuids={}',

'QQ端':'https://pe.3.cn/prices/mgets?origin=4&skuids={}'

}

self.set_skuId()

def set_skuId(self):

self.skuId=input('请输入商品ID:')

r=requests.get('http://item.jd.com/{}.html'.format(self.skuId)).text

cer=re.compile('

(.*)',flags=0)

self.skuName=cer.findall(r)

if not self.skuName:

print('您输入的商品ID有误!')

return self.set_skuId()

else:

print(self.skuName[0])

def get_price(self):

for key,value in self.price_dict.items():

#print(value.format(self.skuId))

r=json.loads(requests.get(value.format(self.skuId)).text)[0]['p']

print(key,r)

def get_stock(self):

provinceName=input('请输入要查询的省份(如福建):')

if provinceName in self.province_dict.keys():

r=json.loads(requests.get('https://c0.3.cn/stock?skuId={skuId}&cat=1316,1385,1408&area={province}_2805_2855'.format(skuId=self.skuId,province=str(self.province_dict[provinceName]))+'&extraParam={%22originid%22:%221%22}').text)

print(format(skuId=self.skuId,province=str(self.province_dict[provinceName])))

print(r['stock']['area']['provinceName'],':',r['stock']['StockStateName'])

if r['stock']['StockStateName']=='无货':

flag=input('商品暂时无货,是否循环监控?y/n:')

if flag=='y':

while True:

r=json.loads(requests.get('https://c0.3.cn/stock?skuId={skuId}&cat=1316,1385,1408&area={province}_2805_2855'.format(skuId=self.skuId,province=str(self.province_dict[provinceName]))+'&extraParam={%22originid%22:%221%22}').text)

print(r['stock']['area']['provinceName'],':',r['stock']['StockStateName'])

if r['stock']['StockStateName']=='现货':

for i in range(4):

winsound.Beep(800,250)

print(r['stock']['area']['provinceName'],':',r['stock']['StockStateName'])

time.sleep(1)

time.sleep(0.3)

winsound.Beep(1600,500)

break

time.sleep(5)

else:

print('您的输入有误,请重新输入!')

return self.get_stock()

if __name__=='__main__':

s=Stock()

s.get_price()

s.get_stock()

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值