­

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('被拖拽元素','拖拽到的目標元素')

完。

下節會模擬爬取下朋友圈。最後送大家一個大禮包。

後台回復大禮包獲取。