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

有没有人爬虫过 APP???求赐教

  •  
  •   liubaobei199209 · 2015-12-08 14:26:43 +08:00 · 2554 次点击
    这是一个创建于 3298 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人是一学生,现在导师让我用 Python 爬 APP ,没什么基础,有做过的或者会的帮帮我,感谢好人!

    9 条回复    2015-12-10 20:25:02 +08:00
    Daniel65536
        1
    Daniel65536  
       2015-12-08 15:18:32 +08:00
    1. App 一般流行用 RESTful 接口获取数据,所以拿个代理找出 RESTful 接口就好
    2. 拿到接口直接无脑循环就能爬完
    zqhong
        2
    zqhong  
       2015-12-08 16:07:16 +08:00
    使用 Fiddler , Tools -> Connections -> Allow remote computers to connect (打勾)。

    接着重启 Fiddler

    手机设置代理,打开你的 app ,开始愉快的抓包吧。
    zqhong
        3
    zqhong  
       2015-12-08 16:09:18 +08:00
    @zqhong Tools -> Fidder Options -> Connections -> Allow remote computers to connect (打勾)

    漏了一个。其他的参考楼上,请请求了哪些参数,返回了哪些数据。预祝成功
    liubaobei199209
        4
    liubaobei199209  
    OP
       2015-12-09 23:34:02 +08:00
    @zqhong 我现在是要怕豌豆荚下每个分类下的前 100 个应用的作者几简介信息,用抓包的话那不是要手动操作无数次吗?
    liubaobei199209
        5
    liubaobei199209  
    OP
       2015-12-09 23:37:43 +08:00
    @Daniel65536 你说的用代理找 RESTful 接口,具体怎么操作呢?我还是个没基础没经验的学生?求赐教,谢谢了
    zqhong
        6
    zqhong  
       2015-12-10 00:12:29 +08:00
    @liubaobei199209 你用豌豆荚,点击相关分类,再按照热度排序。这个时候看抓到了什么数据。这里假设获取应用列表接口的名称叫 get_list ,可能会有几个参数: type (应用类型)、 num (获取条目个数)、 orderby (排序规则)。返回的数据应该会有 应用的 id

    接下来,应该会有一个获取具体条目的接口,这里假设叫 get_item ,用上面获取的应用 id ,就可以获取某个应用具体的信息。获取作者信息这些东西自己探索吧。

    我没做过测试,这些东西也只是猜测。
    Daniel65536
        7
    Daniel65536  
       2015-12-10 01:19:20 +08:00
    @liubaobei199209 拿 Fiddler 之类的软件开个代理,把手机的代理设置上去,然后你就能看到那个程序到底访问了那些地址,比如访问了 http//wandoujia.com/api/v1/topList 之类的地址,然后自己拿 python 写模拟手机访问那个地址就好。
    liubaobei199209
        8
    liubaobei199209  
    OP
       2015-12-10 20:21:41 +08:00
    @Daniel65536 我抓的下载应用是我小,米手机上的应用商店,这是抓的一个地址 http://t1.market.xiaomi.com/thumbnail/webp/l320q80/AppStore/00766c5d9bd20437923ee91393f53ebc9f6525b76 ,我要爬这个 APP 下的 URL 。然后 python 代码如下:
    # coding:utf-8
    import re
    import requests
    r = requests.get('http://t1.market.xiaomi.com/thumbnail/webp/l320q80/AppStore/')
    data = r.text
    # 利用正则查找所有连接
    link_list =re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" ,data)
    for url in link_list:
    print url
    我为什么就爬不出来?是不是正则表达式写错了,正确的是怎样的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5364 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:52 · PVG 14:52 · LAX 22:52 · JFK 01:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.