1
fgwww 2014-06-29 15:21:25 +08:00
好像是有接口,有个rss的样子。
要不就是我记错了 |
2
Shane 2014-06-29 18:02:25 +08:00
|
3
WildCat 2014-06-29 18:16:12 +08:00 via iPhone
借贴问下,有类似的中文站吗
|
5
markyangd OP @WildCat
这个接口必须带term和country,无法批量获取整个app store里当前的更新和刚刚新加入的app |
6
markyangd OP |
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太贵玩不起- - |
8
otakustay 2014-06-30 14:28:52 +08:00
补充一下,楼上说的方法是自己琢磨出来的,AppShopper应该不是这种玩法,但效果是一样的我严格和AppShopper比对过
|
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的话看变量名应该就懂 |