書接上文。使用appium在帖子列表界面模擬上划動做,捕捉不到列表的規律。上劃結束後,列表只能獲取到屏幕呈現的部分,並且下標仍是從0開始的。ios
根據酸奶爸爸多年碼代碼的經驗,帖子確定不是一次性加載完成的,必定會有分頁,上劃操做到某處APP必定會請求API接口。那麼咱們監聽APP的網絡請求不就能獲取到帖子內容了嗎!redis
mac下使用charles這個軟件實現。數據庫
配置好charles網絡監聽後又遇到攔路虎,APP的請求是https協議的,charles監聽到的報文都是亂碼的。我在百度上谷歌了一下。json
終於能在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文件記錄是每次API請求的全過程,有url、參數、響應時間和返回值等等,並且仍是標準的json格式。咱們能夠用新學的go語言寫一個控制檯程序來解析har文件,並將解析後的結果整理歸類,帖子內容存入MySQL數據庫,小姐姐們的圖片curl下載到文件系統。
酸奶爸爸原本是作PHP開發的,如今用GO語言寫這個,本次遷移的技能以下:
因此新語言的學習,第一步只要掌握語法,後續其實就是探索新語言所引入的新特性而已,以go語言爲例,它對高併發有獨到的設計。至於咱們在舊語言所掌握的一些通用技能,一併遷移過來就好。go語言如何鏈接redis、RabbitMQ,這等通用的功能無非就是用go語言的方式引用一下包而已。