V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
markyangd
V2EX  ›  问与答

好奇 AppShopper 的数据来源

  •  
  •   markyangd · 2014-06-29 14:32:20 +08:00 · 4181 次点击
    这是一个创建于 3830 天前的主题,其中的信息可能已经有所发展或是发生改变。
    AppShopper里的app更新、降价、新App的上架都能做到及时监控,它是怎么做到的,Apple的Store应该没有提供相关的接口吧,也应该不是人工处理的,它是怎么做到的啊?
    第 1 条附言  ·  2014-06-29 18:31:02 +08:00
    已知资源:
    Apple官方的接口:
    http://www.apple.com/itunes/affiliates/resources/

    Apple官方rss资源:
    https://rss.itunes.apple.com/

    AppShopper的rss资源:
    http://www.appshopper.com/
    10 条回复    2014-06-30 15:02:00 +08:00
    fgwww
        1
    fgwww  
       2014-06-29 15:21:25 +08:00
    好像是有接口,有个rss的样子。
    要不就是我记错了
    WildCat
        3
    WildCat  
       2014-06-29 18:16:12 +08:00 via iPhone
    借贴问下,有类似的中文站吗
    markyangd
        4
    markyangd  
    OP
       2014-06-29 18:16:45 +08:00
    @fgwww
    AppShopper官方是提供相应的rss,我只是好奇它的数据从哪里来的?
    markyangd
        5
    markyangd  
    OP
       2014-06-29 18:24:56 +08:00   ❤️ 1
    @WildCat
    这个接口必须带term和country,无法批量获取整个app store里当前的更新和刚刚新加入的app
    markyangd
        6
    markyangd  
    OP
       2014-06-29 18:26:26 +08:00
    @WildCat
    http://www.iapps.im/
    但是它好像是由网友发现了后分享的,不是自动抓取的。
    otakustay
        7
    otakustay  
       2014-06-30 14:27:32 +08:00
    https://github.com/otakustay/PingApp/tree/old/src/PingApp.Schedule

    你可以看下这个,我已经没维护很久了,但是应该基本的规则是对的,然后因为太久了我也已经忘了具体的逻辑了,大概是这样:

    1. 用网页直接爬catalog把分类的id拿出来,苹果没有一个单独的接口告诉你有哪些分类
    2. 每一个分类都可以用一个JSON的接口去拿应用,一次最多可以200个
    3. 拿到以后跟数据库里的去比对有没有差异,然后把差异存下来

    这个github repo的代码请随便用随便参考,我设的是2小时抓一次全量,不是国外的服务器网络是会被GFW砍掉的所以服务器必须在国外,然后数据量其实很大,后期MySQL已经吃不消了(因为有个description字段会很长,导致avg row length很长,读数据就会变慢),因此后期我打算改用mongo,然后玩了一半就放弃了VPS太贵玩不起- -
    otakustay
        8
    otakustay  
       2014-06-30 14:28:52 +08:00
    补充一下,楼上说的方法是自己琢磨出来的,AppShopper应该不是这种玩法,但效果是一样的我严格和AppShopper比对过
    otakustay
        9
    otakustay  
       2014-06-30 14:38:40 +08:00   ❤️ 1
    我去看了下自己的源码,基本过程是5个任务:

    1. FullCatalogTask,拉全部的分类,从http://itunes.apple.com/cn/genre/id6018?mt=8类似这样的地址里去把所有应用的列表拉下来,获取的是应用的id数组,这网页有多少个,要自己手动去看
    2. SearchApiTask,用Apple的API获取数据,地址是http://itunes.apple.com/lookup?country=cn&&lang=zh_cn&id=xxx,xxx,最多可以200个id,再多就不给你结果了
    3. DbUpdateTask,找更新,存库
    4. IndexTask,更新Lucene索引
    5. MailTask,把更新通过邮件通知用户

    关键在于,应用的量非常大,必须多线程跑才能在一个周期(我设的2小时一次)内完成,然后网络就会一直被更新应用信息占用着,所以选VPS要注意带宽,免得更新应用占掉所有带宽网站自己打不开了

    然后苹果还有几个RSS是抓取热门应用之类的,可以在自己网站上对上数据,地址就在这里了https://github.com/otakustay/PingApp/blob/old/src/PingApp.Schedule/Task/Top100CheckTask.cs#L18 英文OK的话看变量名应该就懂
    markyangd
        10
    markyangd  
    OP
       2014-06-30 15:02:00 +08:00
    @otakustay
    感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:40 · PVG 22:40 · LAX 06:40 · JFK 09:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.