python爬蟲之app爬取
- 2019 年 10 月 6 日
- 筆記
無論是風裡,還是在雨里,我都在這裡守候著你~
前言:如果你以為python只可以爬取web網頁,那就大錯特錯了,本篇文章教你如何爬取手機app的資訊。
Charles(抓包工具)的安裝(windows版)。
1.1下載
由於是收費軟體,這裡給大家一個鏈接,自行下載。(windows版本),如果是其他系統還是去官網吧。https://www.charlesproxy.com
windows版:
https://pan.baidu.com/s/1bi8Qv3so9NXQPhURcznNNA?提取碼:1kb9
1.2安裝證書
由於現在的網站基本全都是https通訊協議,所以我們需要配置SSL證書。
下載完成後打開軟體。點擊help–>SSL Proxying–>install Charles Root Centificate。
在彈出的安裝證書頁面,點擊安裝證書,點下一步,選擇證書的存儲區域,下一步,選擇將所有的證書都放如下列存儲,瀏覽,受信任的根證書頒發機構,確定,下一個,是,安裝完成!。
1.3手機安裝證書。(Android)
在pc端的Charles中查看代理是否開啟。Proxy–>Proxy Settings。查看HTTP Proxy 是否開啟,沒有開啟的點擊 Enable transparent HTTP proxying,點擊ok即可。
手機和電腦連同一個wifi,查看一下電腦的ip地址。我的是192.168.1.17。打開手機的wifi,連上wifi,代理,手動,主機名填寫ip地址,也就是192.168.1.17.默認埠歐為8888,電腦上會彈出一個是否信任的窗口,點擊Allow即可。
手機端在瀏覽器(不要用原裝瀏覽器)中打開chls.pro/ssl 會彈出一個下載頁面,下載即可。
1.4體驗一下Charles
點一下左側的掃把,清空,開啟監聽,即左側第二個按鈕。手機打開qq,打開列表一直劃,會看到左側出現了很多求情,遺憾的是只能看到好友的頭像,其他內容都加密了。捕捉到資訊後點擊一下,再點擊右邊的Contents,可以看下返回的數據,json,jsontext 等等,捕捉到的資訊足夠我們分析頁面就好了。可以自己動手體驗一下。
Appium的安裝
appium是什麼?和selenium很像,一個在pc端,一個在手機端而已。
appium下載地址:https://github.com/appium/appium-desktop/releases
Android Studio下載地址:https://developer.android.com/studio/index.html?hl=zh-cn(需要科(翻)學(牆)上王)
我們還需要安裝java環境。和nodejs,這些直接百度下載,安裝即可,需要配置好環境變數。
appium的使用

安裝好所有的配置環境後。我們打開appium、會看到這個頁面。
我們直接點擊 Start Server 即可。注意,appium使用的前提是需要android sdk和 java環境。
如果沒有配置好,後面運行是會報錯的,出現錯誤可以後台直接回復,看到會第一時間回復。
點擊之後我們進入到這個頁面:

我們點擊右上角第一個像搜索的按鈕,創建一個新的Session,會出現:

此時我們需要將我們的Android手機用數據線和電腦連接,並且把手機的use調試功能打開。
我們可以輸入dos命令,查看手機是否已經連接並開啟了usb調試功能。adb devices -l 會看到:

表示手機連接成功,如果沒有出現,說明可能手機沒有開啟usb調試功能。model 表示手機型號.
接下來,我們在新創建的Session中寫點配置,實現自動打開微信頁面。

"platformName": "Android",
"deviceName": "MI_6",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI"
platformName:平台名稱,我們的是Android。
deviceName:手機型號。
appPackage:微信的包名。
appActivity:微信的入口。
點擊Save, 再點擊Start Session,會看到如下頁面。

找到我們的登錄按鈕,點擊一下右側Tab,即可進入登錄頁面:

同樣的,我們定位到手機號按鈕,點擊右側的Send keys, 即可:

點擊Send keys 即可同步。
如果要生成對應的python程式碼,可以這樣:

點擊最上方第三個錄製按鈕,再點一下Tab,在Recorder選擇python即可。
用python操控app
3.1、打開微信

這樣即可達到打開微信的操作。
3.2、點擊登錄輸入電話號碼
這裡需要有selenium的基礎和解析庫的基礎,不知道的可以看下:連接1,連接2

3.3、獲取微信按鈕的id

4、其他操作
上一個示例已經完成初始化desired capabilities,定位到元素,點擊,文本輸入操作操作。
4.1、螢幕滾動操作
scroll('被操控元素','目標元素')
4.2、利用坐標滾動
swipe(start_x,start_y,end_x,end_y,duration = None)
start_x:起始坐標橫坐標。
start_y:起始坐標縱坐標。
end_x:結束坐標橫坐標。
end_y:結束坐標縱坐標。
duration:點擊的持續時間。
還有一個方法沒有持續時間,直接快速滑倒該位置。
flick(start_x,start_y,end_x,end_y)
4.3、拖拽操作
drag_and_drop('被拖拽元素','拖拽到的目標元素')
完。
下節會模擬爬取下朋友圈。最後送大家一個大禮包。

後台回復大禮包獲取。