1. 程式人生 > >移動端爬蟲--專案實踐loach--爬去抖音資料(四)

移動端爬蟲--專案實踐loach--爬去抖音資料(四)

文集 移動端爬蟲

原始碼

loach

  • loach是一個移動端爬蟲,針對現下很火的短視訊app—抖音

    1. 支援多個android裝置並行自動化
    2. 支援任意android裝置的服務端部署到任意機器
    3. 支援使用http方法控制任務
  • 示意圖

    9549518-06afde82ac980486.png image
  1. appium 提供了一組restful介面用來控制裝置
  2. scheduler會將從http接收到的command在存在可用裝置的時候丟給裝置去執行
    1. 對於CRAWLING型別的任務,是長期有效的,即任務沒有終結點,裝置會被永久佔用
    2. 對於FINDING型別的任務,重試三次
  3. 確保android sdk正確配置並adb devices能看到裝置
  • QAQ

    1. 整個系統有哪些組成?

      loach程序、appium例項若干、android裝置若干(數量等於appium例項數量)

    2. 一句話概括loach的邏輯?

      http api控制loach(shceduler),loach控制appium例項,appium例項控制android裝置

    3. 部署對網路的要求

      loach程序、appium例項、android裝置必須相互知道其它所在的位置。即在同一LAN

    4. loach、appium、android只能在一臺機器上執行麼?

      不必,正如Q3,互通是唯一網路要求

    5. 補充

      目前我使用i5+8Gwindows部署六臺裝置很流暢,如果需要大量部署的話。估計兩位數就上限了。

      提供兩種思路:

      1. 分散式部署,一個loach帶十個裝置還是很輕鬆的,若干個loach程序選擇一個作為master程序並對外提供http服務
      2. 若干個loach並行,並各自對外提供http服務
  • 白話部署

    1. 環境

      appium: 1.8.1 例項六個 埠4723-4728

      裝置:華為暢享7 SLA-TL10 六臺 ip分別是 192.168.1.201-206 埠 5555-5560

      loach:1.2

    2. 啟動

      1. adb連線裝置

        adb connect 192.168.1.201:5555

        adb connect 192.168.1.202:5556

        adb connect 192.168.1.203:5557

        adb connect 192.168.1.204:5558

        adb connect 192.168.1.205:5559

        adb connect 192.168.1.206:5560

      2. 啟動appium

        appium -p 4723 -U 192.168.1.201

        appium -p 4724 -U 192.168.1.202

        appium -p 4725 -U 192.168.1.203

        appium -p 4726 -U 192.168.1.204

        appium -p 4727 -U 192.168.1.205

        appium -p 4728 -U 192.168.1.206

      3. 啟動loach

        cd loach/loach/instances

        python app.py

      4. 新增任務

        POST 127.0.0.1:8080/douyin/task/devices/

        引數

        {
          "1": {
              "ip": "192.168.1.201",
              "port": 5555,
              "sip": "192.168.1.106",
              "sport":4723
            },
          "2": {
              "ip": "192.168.1.202",
              "port": 5556,
              "sip": "192.168.1.106",
              "sport":4724
            },
          "3": {
              "ip": "192.168.1.203",
              "port": 5557,
              "sip": "192.168.1.106",
              "sport":4725
            },
          "4": {
              "ip": "192.168.1.204",
              "port": 5558,
              "sip": "192.168.1.106",
              "sport":4726
            },
          "5": {
              "ip": "192.168.1.205",
              "port": 5559,
              "sip": "192.168.1.106",
              "sport":4727
            },
          "6": {
              "ip": "192.168.1.206",
              "port": 5560,
              "sip": "192.168.1.106",
              "sport":4728
            }
        }
        

        POST 127.0.0.1:8080/douyin/task/crawling/

        {
          "attrs":["following", "work", "like"]
        }
        
9549518-92e081160013d95f.jpg 331532483913_.pic_hd.jpg