Appium入坑前必看,附爬蟲心得


轉載於:https://zhuanlan.zhihu.com/p/50000275

 

前言:

 

首先聲明一點,在爬任何數據的時候,一定不要先考慮用Appium,

個人建議開始爬蟲前正確的做法應該是:

1.去百度和谷歌搜下這個網站有沒有人分享出你要爬數據的API

2.看看電腦網頁有沒有你要的數據,調查下好不好拿,不管好不好拿,也不要急着就開爬

3.看看有沒有電腦能打開的手機網站,一般格式為,有的話可以用F12檢查抓下包,看下抓取難易程度

4.看看有沒有手機App,抓下App的包,看能不能抓到接口

5.抓下公眾號和小程序的包,看能不能抓到接口

以上調查完成后,再去確定你要選擇的爬取方式。

為什么這么說呢,你有沒有遇到過這種情況,拿着電腦網站就開爬,搞了好幾天終於搞定了反爬和加密參數,突然發現手機或者小程序能抓到現成的接口?或者突然發現這個網站直接有公開的接口。

然后你下次就會按我說的做了,哈哈哈。

其次:

Appium不是爬蟲工具(封面圖上寫的有),而是爬蟲輔助工具,大多數情況下需要和抓包工具配合完成爬蟲!!!


接下來說下Appium的優缺點。雖然有點啰嗦,但是真的有干貨,都是些踩過的坑,還是希望大家能耐心看完,如果實在懶得看,就看加粗的黑字就行。

先說缺點,缺點比較多:

  • ...
  • ...
  • ...

好了說完了。

哈哈哈,其實Appium也很冤,它是有本事點擊的像光速一樣快的,可是因為連的是硬件,硬件反應完它才能進行下一步操作,所以硬件性能越好,它越給力,反之,手機打開個抖音都卡半天,網速一秒10K,讓它給你一分鍾抓幾百上千個視頻?Appium也是委屈巴巴。

什么?要拿它跟Request,Scrapy比速度?來來來,這個加密參數來手寫下,這個反爬來搞定下,Appium根本不需要考慮加密的問題,反爬的話也相對簡單,因為你是模擬人滑動,除非你訪問太過異常,少部分軟件可能會有些限制。


說優點之前,先說說Appium爬蟲的思路。

 

我當初之所以選擇用Appium,是因為那時候要爬抖音無水印視頻,抓包后發現抖音的加密算法太難了,本事有限,暫時破解不了,網上一時也沒找到現成的JS破解代碼。
我又比較懶,偶然發現一款抓包工具可以執行python腳本,所以就想到抓包,我只需要寫幾行代碼,讓Appium代替我滑動手機,甚至這一步可以跳過,我直接手動滑動,一邊刷抖音的同時,讓手機自己生成加密后的參數去請求服務器,讓抓包工具去執行Python腳本,劫持服務器返回的視頻資源就行了,這樣省時省力,也不用把大把時間浪費在破解JS身上。
雖然速度沒有request和Scrapy相比,但是還好Appium支持同時控制多台手機,我當時模擬器三開,兩天抓了將近50W抖音無水印視頻。

 

這也是利用Appium在爬大多數App的主要思路。

那么以上就是Appium的第一個優點,可以盡量少寫代碼,避開那些頭疼的加密參數。

不僅是加密參數,如果你需要模擬注冊,需要破解滑動驗證碼或者短信驗證碼,也是可以用Appium並借助第三方打碼平台搞定的。

其次因為你是模擬人點擊,而且速度夠慢,這時候缺點也變成了優點,那就是基本0反爬,大部分手機App基本沒有反爬,當然不排除個別桑心病狂的例外,比如檢測你訪問頻率,禁止你使用抓包工具,以及傳輸數據不走http協議等。

准確定位元素位置,類似xpath,而不是點擊橫縱坐標,這樣就算頁面布局或者手機型號或者分辨率改變了,也能准確的點到相應元素。

有些App界面上的信息是可以直接通過Appium的text()屬性抓到的,比如微信錢包流水,以前抓過,不知道現在還能不能抓了。

可以自己寫一些小腳本,搞個簽到,搶票,游戲外掛啊什么的(比如雙11時候的11.11秒那個),如果你手頭有大量閑置安卓手機,寫個腳本,開個小工作室幫別人掛掛機刷刷金幣,刷刷任務什么的,也是可以的,這都是后話了。


 總結一下

 

以下情況,可以考慮使用Appium:

  • 你要爬的數據不是太多,你又懶得寫代碼
  • 參數加密太難搞定或者網站反爬太嚴格
  • 有些數據App特有
  • 每天定點注冊,有短信加滑動驗證碼
  • 就是自己私底下想搞些節省人力的小腳本

 

以下情況,請不要優先使用Appium:

  • 老大急着要數據
  • 爬取數據量巨大,除非你有大量閑置電腦或者手機
  • 必須追求穩定,因為模擬器和手機偶爾抽風也很正常。
  • 硬件性能不高,如果用安卓模擬器,必須要有顯卡,否則模擬器不讓你安裝,即使安裝上也卡成PPT,不過我后邊會介紹如何將模擬器部署Docker,因為是無界面的,比較輕量級,對顯卡也無硬性要求。

 


 

以上都是我在使用Appium爬蟲時的個人經驗,僅代表個人觀點。

大家有什么好的建議或者發現有錯誤的地方,歡迎大家評論區留言,謝謝~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM