app端的自動化,淺談APPium
selenium是web端的自動化,appium是app端的自動化,它繼承了webdriver(也就是selenium 2)Appium入坑前必看,附爬蟲心得Appium入坑前必看,附爬蟲心得前言:首先聲明一點,在爬任何數(shù)據(jù)的時候,一定不要先考慮用Appium,個人建議開始爬蟲前...
selenium是web端的自動化,appium是app端的自動化,它繼承了webdriver(也就是selenium 2)
Appium入坑前必看,附爬蟲心得
Appium入坑前必看,附爬蟲心得
前言:
首先聲明一點,在爬任何數(shù)據(jù)的時候,一定不要先考慮用Appium,
個人建議開始爬蟲前正確的做法應該是:
1.去百度和谷歌搜下這個網(wǎng)站有沒有人分享出你要爬數(shù)據(jù)的API
2.看看電腦網(wǎng)頁有沒有你要的數(shù)據(jù),調(diào)查下好不好拿,不管好不好拿,也不要急著就開爬
3.看看有沒有電腦能打開的手機網(wǎng)站,一般格式為http://m.xxx.com或http://mobile.xxxx.com,有的話可以用F12檢查抓下包,看下抓取難易程度
4.看看有沒有手機App,抓下App的包,看能不能抓到接口
5.抓下公眾號和小程序的包,看能不能抓到接口
以上調(diào)查完成后,再去確定你要選擇的爬取方式。
為什么這么說呢,你有沒有遇到過這種情況,拿著電腦網(wǎng)站就開爬,搞了好幾天終于搞定了反爬和加密參數(shù),突然發(fā)現(xiàn)手機或者小程序能抓到現(xiàn)成的接口?或者突然發(fā)現(xiàn)這個網(wǎng)站直接有公開的接口。
然后你下次就會按我說的做了,哈哈哈。
其次:
Appium不是爬蟲工具(封面圖上寫的有),而是爬蟲輔助工具,大多數(shù)情況下需要和抓包工具配合完成爬蟲?。?!
接下來說下Appium的優(yōu)缺點。雖然有點啰嗦,但是真的有干貨,都是些踩過的坑,還是希望大家能耐心看完,如果實在懶得看,就看加粗的黑字就行。
先說缺點,缺點比較多:
- 慢
- 慢
- 慢
- 慢
- ...
- ...
- ...
- 慢
好了說完了。
哈哈哈,其實Appium也很冤,它是有本事點擊的像光速一樣快的,可是因為連的是硬件,硬件反應完它才能進行下一步操作,所以硬件性能越好,它越給力,反之,手機打開個抖音都卡半天,網(wǎng)速一秒10K,讓它給你一分鐘抓幾百上千個視頻?Appium也是委屈巴巴。
什么?要拿它跟Request,Scrapy比速度?來來來,這個加密參數(shù)來手寫下,這個反爬來搞定下,Appium根本不需要考慮加密的問題,反爬的話也相對簡單,因為你是模擬人滑動,除非你訪問太過異常,少部分軟件可能會有些限制。
說優(yōu)點之前,先說說Appium爬蟲的思路。
我當初之所以選擇用Appium,是因為那時候要爬抖音無水印視頻,抓包后發(fā)現(xiàn)抖音的加密算法太難了,本事有限,暫時破解不了,網(wǎng)上一時也沒找到現(xiàn)成的JS破解代碼。
我又比較懶,偶然發(fā)現(xiàn)一款抓包工具可以執(zhí)行python腳本,所以就想到抓包,我只需要寫幾行代碼,讓Appium代替我滑動手機,甚至這一步可以跳過,我直接手動滑動,一邊刷抖音的同時,讓手機自己生成加密后的參數(shù)去請求服務器,讓抓包工具去執(zhí)行Python腳本,劫持服務器返回的視頻資源就行了,這樣省時省力,也不用把大把時間浪費在破解JS身上。
雖然速度沒有request和Scrapy相比,但是還好Appium支持同時控制多臺手機,我當時模擬器三開,兩天抓了將近50W抖音無水印視頻。
這也是利用Appium在爬大多數(shù)App的主要思路。
那么以上就是Appium的第一個優(yōu)點,可以盡量少寫代碼,避開那些頭疼的加密參數(shù)。
不僅是加密參數(shù),如果你需要模擬注冊,需要破解滑動驗證碼或者短信驗證碼,也是可以用Appium并借助第三方打碼平臺搞定的。
其次因為你是模擬人點擊,而且速度夠慢,這時候缺點也變成了優(yōu)點,那就是基本0反爬,大部分手機App基本沒有反爬,當然不排除個別桑心病狂的例外,比如檢測你訪問頻率,禁止你使用抓包工具,以及傳輸數(shù)據(jù)不走http協(xié)議等。
準確定位元素位置,類似xpath,而不是點擊橫縱坐標,這樣就算頁面布局或者手機型號或者分辨率改變了,也能準確的點到相應元素。
有些App界面上的信息是可以直接通過Appium的text()屬性抓到的,比如微信錢包流水,以前抓過,不知道現(xiàn)在還能不能抓了。
可以自己寫一些小腳本,搞個簽到,搶票,游戲外掛啊什么的(比如雙11時候的11.11秒那個),如果你手頭有大量閑置安卓手機,寫個腳本,開個小工作室?guī)蛣e人掛掛機刷刷金幣,刷刷任務什么的,也是可以的,這都是后話了。
總結(jié)一下
以下情況,可以考慮使用Appium:
- 你要爬的數(shù)據(jù)不是太多,你又懶得寫代碼
- 參數(shù)加密太難搞定或者網(wǎng)站反爬太嚴格
- 有些數(shù)據(jù)App特有
- 每天定點注冊,有短信加滑動驗證碼
- 就是自己私底下想搞些節(jié)省人力的小腳本
以下情況,請不要優(yōu)先使用Appium:
- 老大急著要數(shù)據(jù)
- 爬取數(shù)據(jù)量巨大,除非你有大量閑置電腦或者手機
- 必須追求穩(wěn)定,因為模擬器和手機偶爾抽風也很正常。
- 硬件性能不高,如果用安卓模擬器,必須要有顯卡,否則模擬器不讓你安裝,即使安裝上也卡成PPT,不過我后邊會介紹如何將模擬器部署Docker,因為是無界面的,比較輕量級,對顯卡也無硬性要求。
推薦閱讀:小米手環(huán)3nfc支持城市