Python爬虫——实战一:爬取京东产品价格(逆向工程方法)

在京东的单个产品页面上,通过查看源码检查html,可以看到
<span class="p-price"><span>¥</span><span class="price J-p-1279836"></span></span>
这里没有直接给出价格。

这是因为价格数据是通过JS动态加载的,而HTML源码中并不包含动态加载的页面内容。

获取京东商品的价格

#-*- coding:utf-8 -*-
import urllib2
import json

def jd_price(url):
        sku = url.split('/')[-1].strip(".html")
        print sku
        price_url = "https://p.3.cn/prices/mgets?skuIds=J_" + sku
        response = urllib2.urlopen(price_url)
        content = response.read()
        result = json.loads(content)
        print result
        record = result[0]
        #print "price:", record['p']
        return record['p']  
if __name__=="__main__":
        jd_price("https://item.jd.com/12419422058.html")

上述代码的关键在于https://p.3.cn/prices/mgets?skuIds=J_12419422058” ,打开这个链接,可以看到:

这里写图片描述

这个就是针对价格请求返回的响应页面,其中”p”表示的就是商品的价格。

如何知道上面的URL中有价格信息呢?

在火狐浏览器中安装了Firebug。右键点击商品价格,选择“使用Firebug查看元素”,可以看到打开的“HTML”中包含了价格信息。这是因为Firebug的”HTML”显示的是动态加载完所有数据后的源码。

现在选择Firebug的“网络”,然后刷新当前商品页面。然后选择“全部”,在“域”栏找到p.3.cn,该行对应的就是价格请求。

实际中遇到的问题

2017.8.22
在多次运行爬虫之后,价格页面返回的是

{"error":"pdos_captcha"}

采用渲染引擎方法。

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值