好奇 AppShopper 的数据来源

2014-06-29 14:32:20 +08:00
 markyangd
AppShopper里的app更新、降价、新App的上架都能做到及时监控,它是怎么做到的,Apple的Store应该没有提供相关的接口吧,也应该不是人工处理的,它是怎么做到的啊?
4074 次点击
所在节点    问与答
10 条回复
fgwww
2014-06-29 15:21:25 +08:00
好像是有接口,有个rss的样子。
要不就是我记错了
Shane
2014-06-29 18:02:25 +08:00
WildCat
2014-06-29 18:16:12 +08:00
借贴问下,有类似的中文站吗
markyangd
2014-06-29 18:16:45 +08:00
@fgwww
AppShopper官方是提供相应的rss,我只是好奇它的数据从哪里来的?
markyangd
2014-06-29 18:24:56 +08:00
@WildCat
这个接口必须带term和country,无法批量获取整个app store里当前的更新和刚刚新加入的app
markyangd
2014-06-29 18:26:26 +08:00
@WildCat
http://www.iapps.im/
但是它好像是由网友发现了后分享的,不是自动抓取的。
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
2014-06-30 14:28:52 +08:00
补充一下,楼上说的方法是自己琢磨出来的,AppShopper应该不是这种玩法,但效果是一样的我严格和AppShopper比对过
otakustay
2014-06-30 14:38:40 +08:00
我去看了下自己的源码,基本过程是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
2014-06-30 15:02:00 +08:00
@otakustay
感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/120083

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX