现在网上东西越来越难抢了,所以有了监控京东产品价格的想法。
主要实现以下功能:
长期监控某产品价格
当价格降低时通过弹框和邮件形式提醒
保存产品价格数据,便于日后分析
整个程序最主要的几个模块如下:
1.价格监控模块
主要通过京东产品价格数据接口获取数据。该数据接口分为PC端价格、手机端价格、QQ端价格和微信端价格四部分,我们将这四部分数据全部获取,并将其存入priceMatrix列表之中。
#获取京东商品价格函数
def getJDprice(address,time):
#获取京东商品的ID号
reg = r'https://item.jd.com/(.*?).html'
idre = re.compile(reg)
idlist = re.findall(idre,address)
id = "".join(idlist[0])
#通过数据接口查询京东商品价格
#pc端价格数据接口
url1='https://p.3.cn/prices/mgets?type=1&skuIds=' + 'J_' + id
#手机端价格数据接口
url2='https://p.3.cn/prices/mgets?type=2&skuIds=' + 'J_' + id
#QQ端价格数据接口
url4='https://p.3.cn/prices/mgets?type=4&skuIds=' + 'J_' + id
#微信端价格数据接口
url5='https://p.3.cn/prices/mgets?type=5&skuIds=' + 'J_' + id
try:
headers = {
'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
#pc端价格
request = urllib2.Request(url = url1,headers = headers)
html1 = urllib2.urlopen(request).read()
reg = r'"p":"(.*?)"'
pricere1 = re.compile(reg)
pricelist1 = re.findall(pricere1,html1)
price1 = "".join(pricelist1[0])
#手机端价格
request = urllib2.Request(url = url2,headers = headers)
html2 = urllib2.urlopen(request).read()
reg = r'"p":"(.*?)"'
pricere2 = re.compile(reg)
pricelist2 = re.findall(pricere2,html2)
price2 = "".join(pricelist2[0])
#QQ端价格
request = urllib2.Request(url = url4,headers = headers)
html4 = urllib2.urlopen(request).read()
reg = r'"p":"(.*?)"'
pricere4 = re.compile(reg)
pricelist4 = re.findall(pricere4,html4)
price4 = "".join(pricelist4[0])
#微信端价格
request = urllib2.Request(url = url5,headers = headers)
html5 = urllib2.urlopen(request).read()
reg = r'"p":"(.*?)"'
pricere5 = re.compile(reg)
pricelist5 = re.findall(pricere5,html5)
price5 = "".join(pricelist5[0])
#获取系统时间
timestamp = time
#将数据存入列表
priceMatrix = [timestamp,price1,price2,price4,price5]
print 'Time : ' + priceMatrix[0]
print 'JD id : ' + id
print 'PC price: ' + price1
print 'Cellphone price: ' + price2
print 'QQ price: ' + price4
print 'Wechat price: ' + price5
print '\n'
return priceMatrix
except urllib2.URLError, e: