V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yuyuyu101
V2EX  ›  程序员

爬虫去京东商城。价格被隐藏的问题

  •  
  •   yuyuyu101 ·
    yuyuyu101 · May 30, 2012 · 16170 views
    This topic created in 5085 days ago, the information mentioned may be changed or developed.
    正常浏览器访问京东的商品页,可看到红色的价格,并且查看html代码可看到价格是文本格式。

    我用爬虫访问时,返回的html代码没有价格,我尝试修改爬虫的user-agent为chrome,但是仍然没用。有人知道。京东是采用什么原理进行屏蔽的么
    29 replies    2016-05-16 19:24:40 +08:00
    lerry
        1
    lerry  
       May 30, 2012
    京东的网页,红色的价格是图片,源码看不到的,只能看到“市场价”,你能看到?发个链接?
    9hills
        2
    9hills  
       May 30, 2012
    是图片无误,用OCR吧

    road2stat
        3
    road2stat  
       May 30, 2012
    用 tcpdump + Wireshark 之类的分析一下京东 iOS app 的私有 API 就可以了。你懂的。
    9hills
        4
    9hills  
       May 30, 2012
    @road2stat 是想反向私有API么?不可能的。。。
    phuslu
        5
    phuslu  
       May 30, 2012   ❤️ 3
    两步可以拿到。
    1. 模拟点击"加入购物车",拿到 cookie
    2. 用这个 cookie 去访问 http://cart.360buy.com/cart/cart.html

    绝大部分的购物网站可以用这个办法解决。
    road2stat
        6
    road2stat  
       May 30, 2012
    @9hills 我跟了一下,没有使用 SSL / OAuth 之类的东西,就是一个简单的请求,返回一个简单的 JSON,你也可以做下实验。

    即使是加上 SSL 的普通请求,也可以自建中间人把加密包解开然后进行分析。但是如果加上了 OAuth 的私钥什么的,可能会比较困难。
    cooiky
        7
    cooiky  
       May 30, 2012
    @phuslu 这种对少量商品可以,如果是去抓全站商品,这样就很麻烦了
    aa88kk
        8
    aa88kk  
       May 30, 2012
    抓下图片, 然后用tesseract去识别, 某淘就是这么干的.
    cutehalo
        9
    cutehalo  
       May 30, 2012   ❤️ 3
    function jdPshowRecommend(url,stype) {
    var title = "CAMEL/骆驼 2012新款男款纯棉短袖t恤透气休闲翻领polo衫夏季新品 017308 男款军绿 XL直降108 限时抢购 送给父亲最好的礼物 仅限30日";
    var content = "我在@京东商城 发现了一个非常不错的商品:CAMEL/骆驼 2012新款男款纯棉短袖t恤透气休闲翻领polo衫夏季新品 017308 男款军绿 XL直降108 限时抢购 送给父亲最好的礼物 仅限30日,京东价:¥276.00。感觉不错,分享一下";


    看到这个微博分享的JS里面就有京东价了吧。。。京东还用图片来屏蔽个毛啊....
    gavingeng
        10
    gavingeng  
       May 30, 2012
    @cutehalo
    你抓的是分享SNS里的价格吧
    cutehalo
        11
    cutehalo  
       May 30, 2012
    @gavingeng 这个是分享按钮的JS 是在商品页里的 京东价被写在这里头了...
    forest520
        12
    forest520  
       May 30, 2012
    @cutehalo 呵呵,有了这个,确实图片就多余了。
    sarices
        13
    sarices  
       May 30, 2012
    我之前都是用分享按钮的价格,不明白京东为何用图片显示
    waterye
        14
    waterye  
       May 30, 2012
    我猜是技术部门不同项目组独立干,没有统一规则。
    kamal
        15
    kamal  
       May 30, 2012
    LOL 网页里面直接输出了
    function jdPshowRecommend(url,stype)
    tokki
        16
    tokki  
       May 30, 2012
    这好玩 以后我要抓什么东西了 就发动一下大家一起来研究 太有趣了
    c
        17
    c  
       May 30, 2012
    收藏。我以为ocr是唯一的解决方案,没想到学习了这么多。
    yuyuyu101
        18
    yuyuyu101  
    OP
       May 30, 2012
    @9hills 我发现图书产品页不是图片 http://book.360buy.com/10058893.html
    ljbha007
        19
    ljbha007  
       May 30, 2012
    @cutehalo 至今没有找到分享按钮在哪 不过那个函数的确在啊 碉堡了
    cutehalo
        20
    cutehalo  
       May 30, 2012
    @ljbha007 分享按钮就在那个商品图片框的下面 有一排
    csx163
        21
    csx163  
       May 30, 2012
    此贴学到不少东西,感谢
    @phuslu
    @cutehalo
    kxboy
        22
    kxboy  
       May 30, 2012
    这个帖子我喜欢,我前一段时间为此困扰好久。
    Air_Mu
        23
    Air_Mu  
       May 30, 2012
    <script type="text/javascript">

    function jdPshowRecommend(url,stype) {

    var title = "摩托罗拉(Motorola)ME722 3G手机(精锐蓝)WCDMA/GSM";

    var content = "我在@京东商城 发现了一个非常不错的商品:摩托罗拉(Motorola)ME722 3G手机(精锐蓝)WCDMA/GSM,京东价:¥1458.00。感觉不错,分享一下";

    var img ="http://img10.360buyimg.com/n1/4332/6e812b1c-2cbe-4bb2-a313-207121b32684.jpg";

    var productUrl ="http://www.360buy.com/product/342079.html?sid=";

    var pin = readCookie("pin")||"";

    if (stype == "qzone") {

    url = url + "&title=" + content + "&pic=" + img + "&url=" + productUrl + pin;

    }

    if (stype == "sina") {

    url = url + "&title=" + encodeURIComponent(content) + "&pic=" + encodeURIComponent(img) + "&url=" + encodeURIComponent(productUrl) + pin;

    PostSinaDate();

    window.open(url, "", "height=500, width=600");

    }

    if (stype == "renren") {

    url = url + "title=" + title +"&content="+ content + "&pic=" + img + "&url=" + productUrl + pin;

    }

    if (stype == "kaixing") {

    url = url + "rtitle=" + title + "&rcontent=" + content + "&rurl=" + productUrl + pin;

    }

    if (stype == "douban") {

    url = url + "title=" + title + "&comment=" + content + "&url=" + productUrl + pin;

    }

    if (stype == "MSN") {

    url = url + "url=" + productUrl + pin + "&title=" + title + "&description=" + content + "&screenshot=" + img;

    }

    if (stype != "sina") {

    window.open(encodeURI(url), "", "height=500, width=600");

    }

    }



    //新浪分享POST数据
    hnpdslyf
        24
    hnpdslyf  
       May 30, 2012
    识别图片也不难啊,那么整齐的数字,分块对比一下就行
    asnidea
        25
    asnidea  
       May 31, 2012
    不错,mark下
    aerofloyd
        26
    aerofloyd  
       May 31, 2012
    感谢。。
    cooiky
        27
    cooiky  
       Jun 1, 2012
    @Air_Mu 这个价格是不准的,对一些特价活动的商品
    vexfisher
        28
    vexfisher  
       Jun 3, 2012
    同上
    一个商品有N中属性组合,不同的属性组合对应的价格是不同的,所以这个JS函数的价格仅供参考啊
    cangbaotu
        29
    cangbaotu  
       May 16, 2016
    你可以参考这篇教程,里面专门讲了如何写这类爬虫(异步加载,代码在神箭手云爬虫上可以直接跑): http://blog.csdn.net/youmumzcs/article/details/51385856
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2347 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 81ms · UTC 04:56 · PVG 12:56 · LAX 21:56 · JFK 00:56
    ♥ Do have faith in what you're doing.