1. 程式人生 > >APP爬蟲(2)把小姐姐的圖片down下來

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

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

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

根據酸奶爸爸多年碼程式碼的經驗,帖子肯定不是一次性載入完成的,一定會有分頁,上劃操作到某處APP一定會請求API介面。那麼我們監聽APP的網路請求不就能獲取到帖子內容了嗎!

mac下使用charles這個軟體實現。

charles簡介

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

Mac使用Charles進行HTTPS抓包

終於能在charles裡看到明文的網路請求了,於是通過網路請求可以歸納出帖子分頁載入的規律。這樣酸奶爸爸就可以自己編寫程式,迴圈呼叫API請求抓取資料了。此處又遇到攔路虎(我為什麼要加個“又”字)。API的請求做了引數簽名校驗,每次從charles抓到的請求,時效只有5分鐘。

如果抓取程式能夠儘可能的模仿使用者行為,那麼我們會突破所有服務端的屏障。

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

使用charles的自動儲存功能,定時儲存API響應結果。在charles的選單欄“Tools”->“Auto Save”。按照下圖配置,“Save Type”請選擇“HTTP Archive”。配置完成後,charles抓取到的API響應會儲存為HAR格式的文字檔案。

HAR 格式規範

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

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

酸奶爸爸本來是做PHP開發的,現在用GO語言寫這個,本次遷移的技能如下:

  • 日誌記錄
  • MySQL資料庫讀寫
  • 斷點除錯
  • 文字檔案讀取
  • json解析
  • 配置檔案的解析
  • curl下載檔案

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

所以你看,離開舒適區其實也挺容易的吧。

總結,這裡才是乾貨

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

相關推薦

APP爬蟲2姐姐圖片down下來

APP爬蟲(1)想學新語言,又沒有動力,怎麼辦? 書接上文。使用appium在帖子列表介面模擬上划動作,捕捉不到列表的規律。上劃結束後,列表只能獲取到螢幕呈現的部分,而且下標還是從0開始的。 根據酸奶爸爸多年碼程式碼的經驗,帖子肯定不是一次性載入完成的,一定會有分頁,上劃操作到某處APP一定會請求API介

白學 Python 爬蟲2:前置準備基本類庫的安裝

人生苦短,我用 Python 前文傳送門: 小白學 Python 爬蟲(1):開篇 本篇內容較長,各位同學可以先收藏後再看~~ 在開始講爬蟲之前,還是先把環境搞搞好,工欲善其事必先利其器嘛~~~ 本篇文章主要介紹 Python 爬蟲所使用到的請求庫和解析庫,請求庫用來請求目標內容,解析庫用來解析請

練手小項目2-生活助手--星座運勢查詢

avi 聚合數據 當前 value book tell 身邊 req pin 上一篇內容 練手小項目(2)-生活小助手 今天星期一。趁著中午的歇息時間把 第二個寫出來 星座運勢,近期看看極客學院 用聚合數據做了天氣預報的視頻教程,不好評價他。看他在後面的代碼變更那

微信程序——豆瓣電影——2程序運行部署

images 放心 覆蓋 當前 .cn markup 必須 global 定義 Demo 預覽 演示視頻(流量預警 2.64MB) GitHub Repo 地址 倉庫地址:https://github.com/zce/weapp-demo 使用步驟 將倉庫克隆到本地

53. Python 爬蟲2

expires www. als aid rgb user col pri request CookieRequests通過會話信息來獲取cookie信息Cookie的五要素: Name value domain path expires打印cookie

appium+python的APP自動化2

.exe path 輸入 地址 cat 打開 installer tor sof 上節說到安卓上的測試環境都安裝好了,這個時候要安裝python了 1python的安裝 https://www.python.org/15官網下載python2.7(3.0以上也行,個人愛好)

網易雲音樂評論爬蟲2:歌曲的全部評論

ima cbc 原理分析 nbsp oss 處理 oop win 接下來 用過網易雲音樂聽歌的朋友都知道,網易雲音樂每首歌曲後面都有很多評論,熱門歌曲的評論更是接近百萬或者是超過百萬條.現在我就來分享一下如何爬取網易雲音樂歌曲的全部評論,由於網易雲音樂的評論都做了混淆加密處

Python的學習筆記DAY7---關於爬蟲2之Scrapy初探

        首先是安裝,python3+windows10 64位。         安裝Scrapy,安裝,直接pip install Scrapy.....下載了半天報錯。。好像是沒有lxml這

在實際的開發工作中,對字串的處理是最常見的程式設計任務。本題目即是要求程式對使用者輸入的串進行處理。具體規則如下: 1)把每個單詞的首字母變為大寫。 (2)把數字與字母之間用下劃線字元_分開,使得更

在實際的開發工作中,對字串的處理是最常見的程式設計任務。本題目即是要求程式對使用者輸入的串進行處理。具體規則如下: (1)把每個單詞的首字母變為大寫。 (2)把數字與字母之間用下劃線字元(_)分開,使得更清晰; (3)把單詞中間有多個空格的調整為1個空格。   &

手把手教你寫網路爬蟲2:迷你爬蟲架構

語言&環境 有需要Python學習資料的小夥伴嗎?小編整理【一套Python資料、原始碼和PDF】,感興趣者可以加學習群:548377875或者加小編微信:【mmp9972】反正閒著也是閒著呢,不如學點東西啦~~ 語言:帶足彈藥,繼續用Python開路! t

網路流2-----最費用最大流

一. 二. 1.EK演算法 + SPFA 最短路 (1)程式碼: #include <iostream> #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f c

認識爬蟲2

用爬蟲下載簡單的頁面,可以拿來練手 import requests class TiebaSpider: def __init__(self,tieba_name_crawl): """ 初始化必要引數,完成基礎設定 :param

pyhton微博爬蟲2——獲取微博使用者關注列表

本文的主要目標是獲取微博使用者關注列表以及關注列表中各微博使用者的ID、暱稱、詳情連結、粉絲數、關注數等關鍵資訊。 實現程式碼如下所示: # -*- coding: utf-8 -*- """ Created on Thu Aug 3 20:59:53

python3實現網路爬蟲2--BeautifulSoup使用1

這一次我們來了解一下美味的湯--BeautifulSoup,這將是我們以後經常使用的一個庫,並且非常的好用。 BeautifuleSoup庫的名字取自劉易斯·卡羅爾在《愛麗絲夢遊仙境》裡的同名詩歌。在故事中,這首歌是素甲魚唱的。就像它在仙境中的說法一樣,BeautifulS

文件的相似度2--最雜湊簽名

           接著上一篇的部落格繼續下去,這篇部落格主要講下最小雜湊簽名的東西。           對於上篇部落格中提到的shingle,可以說是在壓縮資料量的基礎上又儘可能保留了源文件的特徵,以便於後面對不同的文件進行相似度比較。但是我們會發現,shingle集

爬蟲2

結合 span 表達式 安裝 src ins tree path 方法 一、XPATH解析和案例   XPATH是解析方式中最重要的一種。 1、環境安裝   pip install lxml 2、解析原理   - 獲取頁面源碼數據   - 實例化一個etree的

微信程式開發2---APP()函式

App({ onLaunch: function(options) { // Do something initial when launch. }, onShow: function(options) { // Do something when show. }, onHide: function() {

node.js 爬蟲抓取網頁資料2

node.js 小爬蟲抓取網頁資料 在原來的基礎上,採用了promise的模組,使其可以一次性多頁面的爬取網頁資料。 var http = require('http') var Promise = require('promise') var cheerio = re

c++的const總結2

通過 con 其他 綁定 strong col 指針和引用 兩個 tle c++的const小總結(1) http://www.cnblogs.com/MyNameIsPc/p/7091631.html 頂層const和底層cnost 先憑經驗區分一下兩者的區別?

學期實踐心得2

計算 servlet cond end vax turn isp xwork res 這次我了解了spring+hibernate 的包和其作用。在使用面向對象技術進行大型復雜系統的設計與開發中,通常需要設計與定義許多類,這些類中有些具有復雜的關系。如何對這些類進行有效的管