文集 移動(dòng)端網(wǎng)頁(yè)端爬蟲(chóng)
loach
-
loach是一個(gè)移動(dòng)端爬蟲(chóng)占调,針對(duì)現(xiàn)下很火的短視頻app—抖音
- 支持多個(gè)android設(shè)備并行自動(dòng)化
- 支持任意android設(shè)備的服務(wù)端部署到任意機(jī)器
- 支持使用http方法控制任務(wù)
- 支持常規(guī)爬取,搜索佃却,私信,話題四個(gè)部分 API示例
-
示意圖
image
- appium 提供了一組restful接口用來(lái)控制設(shè)備
- scheduler會(huì)將從http接收到的command在存在可用設(shè)備的時(shí)候丟給設(shè)備去執(zhí)行
- 對(duì)于CRAWLING類(lèi)型的任務(wù),是長(zhǎng)期有效的,即任務(wù)沒(méi)有終結(jié)點(diǎn)镜豹,設(shè)備會(huì)被永久占用
- 對(duì)于FINDING類(lèi)型的任務(wù),重試三次
- 確保android sdk正確配置并adb devices能看到設(shè)備
-
QAQ
-
整個(gè)系統(tǒng)有哪些組成蓝牲?
loach進(jìn)程、appium實(shí)例若干泰讽、android設(shè)備若干(數(shù)量等于appium實(shí)例數(shù)量)
-
一句話概括loach的邏輯例衍?
http api控制loach(shceduler),loach控制appium實(shí)例已卸,appium實(shí)例控制android設(shè)備
-
部署對(duì)網(wǎng)絡(luò)的要求
loach進(jìn)程佛玄、appium實(shí)例、android設(shè)備必須相互知道其它所在的位置累澡。即在同一LAN
-
loach梦抢、appium、android只能在一臺(tái)機(jī)器上運(yùn)行么愧哟?
不必奥吩,正如Q3,互通是唯一網(wǎng)絡(luò)要求
-
補(bǔ)充
目前我使用i5+8Gwindows部署六臺(tái)設(shè)備很流暢蕊梧,如果需要大量部署的話霞赫。估計(jì)兩位數(shù)就上限了湃鹊。
提供兩種思路:
- 分布式部署急但,一個(gè)loach帶十個(gè)設(shè)備還是很輕松的粘我,若干個(gè)loach進(jìn)程選擇一個(gè)作為master進(jìn)程并對(duì)外提供http服務(wù)
- 若干個(gè)loach并行衙猪,并各自對(duì)外提供http服務(wù)
-
-
白話部署
-
環(huán)境
appium: 1.8.1 實(shí)例六個(gè) 端口4723-4728
設(shè)備:華為暢享7 SLA-TL10 六臺(tái) ip分別是 192.168.1.201-206 端口 5555-5560
loach:1.2
-
啟動(dòng)
-
adb連接設(shè)備
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
-
啟動(dòng)appium
appium -p 4723 -bp 6001 -U 192.168.1.201
appium -p 4724 -bp 6001 -U 192.168.1.202
appium -p 4725 -bp 6001 -U 192.168.1.203
appium -p 4726 -bp 6001 -U 192.168.1.204
appium -p 4727 -bp 6001 -U 192.168.1.205
appium -p 4728 -bp 6001 -U 192.168.1.206
bp:并行啟動(dòng)最好指定扛拨,否則引發(fā)“socket ended by other party” -
啟動(dòng)loach
cd loach/loach/instances
python app.py
-
添加任務(wù)
POST 127.0.0.1:8080/douyin/task/devices/
參數(shù)
{ "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"] }
-
-