python抓取京东商城的商品名称和价格

突然心血来潮想抓一个京东的商品价格,突然发现网页的源码里没有价格这一项,只有商品的编号,网上说是显示的同事js从数据库里取出商品价格,放在页面上,那么我只能模拟请求了。哇咔咔,记得去你给京东投简历之后就没有然后了,难道就因为我也叫京东,你这也太浮夸了,给我幼小心灵造成创伤了。

原本要写一下creepy这个模块来抓取了,但今天时间不够了,明天还要上班。。。。明天再写那个模块吧,据说是台湾大牛开发的,超级给力。

import urllibimport jsonimport reclass JdPrice(object):"""对获取京东商品价格进行简单封装"""def __init__(self, url):self.url = urlself._response = urllib.urlopen(self.url)self.html = self._response.read()def get_product(self):"""获取html中,商品的描述(未对数据进行详细处理,粗略的返回str类型)"""product_re = re.compile(r'compatible: true,(.*?)};', re.S)product_info = re.findall(product_re, self.html)[0]return product_infodef get_product_skuid(self):"""通过获取的商品信息,获取商品的skuid"""product_info = self.get_product()skuid_re = re.compile(r'skuid: (.*?),')skuid = re.findall(skuid_re, product_info)[0]return skuiddef get_product_name(self):"""通过获取的商品信息,获取商品的name"""#'\u4e2d\u6587'.decode('unicode-escape') (你可能需要print它才能看到结果)product_info = self.get_product()#源码中名称左右有两个',所以过滤的时候应该去掉name_re = re.compile(r"name: '(.*?)',")name = re.findall(name_re, product_info)[0]return name.decode('unicode-escape')#将其转换为中文def get_product_price(self):"""根据商品的skuid信息,请求获得商品price:return:"""price = None#得到产品的序号和名称,取价格的时候会用得到skuid = self.get_product_skuid()name = self.get_product_name()print name#通过httpfox检测得知,每次网页都会访问这个网页去提取价格嵌入到html中url = '?skuIds=J_' + skuid + '&type=1'#json调整格式,,并将其转化为utf-8,列表中只有一个字典元素所以取出第一个元素就转化为字典price_json = json.load(urllib.urlopen(url))[0]#p对应的价格是我们想要的if price_json['p']:price = price_json['p']return priceif __name__ == '__main__':print "+"*20+"welcome to 京东放养的爬虫"+"+"*20url = ''jp = JdPrice(url)print jp.get_product_price()print "+"*20+"welcome to 京东放养的爬虫"+"+"*20

你的脸是为了呈现上帝赐给人类最贵重的礼物–微笑,

python抓取京东商城的商品名称和价格

相关文章:

你感兴趣的文章:

标签云: