APP爬蟲(2)把小姐姐的圖片down下來

APP爬蟲(1)想學新語言,又沒有動力,怎麼辦?html

書接上文。使用appium在帖子列表界面模擬上划動做,捕捉不到列表的規律。上劃結束後,列表只能獲取到屏幕呈現的部分,並且下標仍是從0開始的。ios

根據酸奶爸爸多年碼代碼的經驗,帖子確定不是一次性加載完成的,必定會有分頁,上劃操做到某處APP必定會請求API接口。那麼咱們監聽APP的網絡請求不就能獲取到帖子內容了嗎!redis

mac下使用charles這個軟件實現。數據庫

charles簡介編程

配置好charles網絡監聽後又遇到攔路虎,APP的請求是https協議的,charles監聽到的報文都是亂碼的。我在百度上谷歌了一下。json

Mac使用Charles進行HTTPS抓包網絡

終於能在charles裏看到明文的網絡請求了,因而經過網絡請求能夠概括出帖子分頁加載的規律。這樣酸奶爸爸就能夠本身編寫程序,循環調用API請求抓取數據了。此處又遇到攔路虎(我爲何要加個「又」字)。API的請求作了參數簽名校驗,每次從charles抓到的請求,時效只有5分鐘。併發

若是抓取程序可以儘量的模仿用戶行爲,那麼咱們會突破全部服務端的屏障。

使用appium的在帖子詳情頁每3秒模擬用戶上劃一次,使用charles監聽虛擬機的網絡請求。這樣charles會源源不斷的捕捉到帖子分頁的API請求。此處又又遇到攔路虎(我不喜歡「攔」,但我喜歡「路虎」)。此時小姐姐們的照片仍是在charles裏,並且還都是url字符串。app

使用charles的自動保存功能,定時保存API響應結果。在charles的菜單欄「Tools」->「Auto Save」。按照下圖配置,「Save Type」請選擇「HTTP Archive」。配置完成後,charles抓取到的API響應會保存爲HAR格式的文本文件。curl

HAR 格式規範

到這裏總算是撥開雲霧見青天,har文件記錄是每次API請求的全過程,有url、參數、響應時間和返回值等等,並且仍是標準的json格式。咱們能夠用新學的go語言寫一個控制檯程序來解析har文件,並將解析後的結果整理歸類,帖子內容存入MySQL數據庫,小姐姐們的圖片curl下載到文件系統。

新語言的學習並不都是新知識的學習,更多的是編程習慣的遷移。

酸奶爸爸原本是作PHP開發的,如今用GO語言寫這個,本次遷移的技能以下:

  • 日誌記錄
  • MySQL數據庫讀寫
  • 斷點調試
  • 文本文件讀取
  • json解析
  • 配置文件的解析
  • curl下載文件

因此新語言的學習,第一步只要掌握語法,後續其實就是探索新語言所引入的新特性而已,以go語言爲例,它對高併發有獨到的設計。至於咱們在舊語言所掌握的一些通用技能,一併遷移過來就好。go語言如何鏈接redis、RabbitMQ,這等通用的功能無非就是用go語言的方式引用一下包而已。

因此你看,離開溫馨區其實也挺容易的吧。

總結,這裏纔是乾貨

  • 學習新技能要給本身設立一個目標做爲獎勵,遇到困難的時候,想一想咱們的達成目標後的獎勵,是否是又有動力了。哪怕僅僅以看視頻教程的方式學新語言,也堅持不了多久。
  • 咱們掌握的每一項技能都是一個工具,遇到問題的時候,回顧一下咱們的工具箱,將其中某幾種工具組合起來就能解決問題。因此平時要多聽多看多思考,這樣咱們才能向工具箱裏裝足夠多的工具。遇到問題的時候,纔有足夠多的工具以供組裝起來解決問題。
  • 舊語言與新語言重疊的功能,這些是時間積澱的經典,須要夯實;新語言的新特性須要格外關注,不管是找工做仍是裝13都用獲得;舊語言的舊功能,就讓它隨風而去吧。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息