去哪儿 android手机客户端抓取

有个朋友需要抓取去哪儿手机客户端的机票数据,就找到我帮个忙。 我看了下说通过web页面抓取更容易,但是朋友就说要通过app客户端。好在本人有过app开发经验,以前也做过微信数据的抓取,正好可以复习下app的数据抓取。下面就开始吧~

1、首先需要在电脑上安装appium,我这里在mac还是windows下都用对应的安装软件。配置环境这里不做多说,需要配置java home及android的环境。

2、在手机上安装去哪儿app客户端。

3、需要分析去哪儿的app客户端,需要取到app的包名跟第一个activity的名字。 

  在mac下使用命令:adb shell dumpsys window | grep  mCurrentFocus

  在windows下貌似:adb shell dumpsys window | findstr  mCurrentFocus

  运行命令会打印出响应的包名跟activitiy的名字:包名:com.Qunar  activity:com.mqunar.splash.SplashActivity

  注意:这里一定是刚进入的第一个activity的名字。

4、进行机票页面的分析,这里需要懂一些app客户端开发的只是。启动android开发包中的monitor命令,进行页面分析。

    如下图通过这个页面可以分析响应的机票数据,需要哪个数据提取便可以。后面会有提取机票数据代码。

去哪儿 android手机客户端抓取

5、进行代码编写。主要的参数:

    AndroidDriver driver;
    DesiredCapabilities des = new DesiredCapabilities();

        des.setCapability("platformName", "Android");//平台名称
        des.setCapability("platformVersion", "6.0.1");//手机操作系统版本
//        des.setCapability("udid", "192.168.229.101:5555");//连接的物理设备的唯一设备标识
        des.setCapability("deviceName", "4abad80e");//使用的手机类型或模拟器类型  UDID

        des.setCapability("appPackage", "com.Qunar");//App安装后的包名,
        des.setCapability("appActivity", "com.mqunar.splash.SplashActivity");

        des.setCapability("appWaitActivity", "com.mqunar.splash.SplashActivity");

6、编写提取app机票数据代码逻辑,类似从web页面提取我们需要的元素,使用xpath或者cssselector处理。

f_major_bundle_rn|QunarFlightList|Flights这个元素是对应每一条记录的机票数据。再从中提取需要的机票数据。

去哪儿 android手机客户端抓取

7、启动appium服务。启动我们的程序,便可以抓取需要的机票数据。我们这里只是获取机票的文本数据,如下:

07:25
09:35
首都T1
浦东T2
¥617
经典经济舱4.2折
海航HU7611
波音787(大)
|
2h10m

飞猪 或者 其他客户端的机票数据也是同样大操作道理。 

最后的效果视频传到youtube了:https://youtu.be/6f4wXTR8l4U

有问题或者其他问题请反馈我:[email protected]