佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Python使用Appium在移動端抓取微博數(shù)據(jù)的實現(xiàn)

Python使用Appium在移動端抓取微博數(shù)據(jù)的實現(xiàn)

熱門標簽:服務(wù)器配置 鐵路電話系統(tǒng) 智能手機 美圖手機 網(wǎng)站文章發(fā)布 檢查注冊表項 呼叫中心市場需求 銀行業(yè)務(wù)

使用Appium在移動端抓取微博數(shù)據(jù)

Appium是移動端的自動化測試工具,讀者可以類比為PC端的selenium。通過它,我們可以驅(qū)動App完成自動化的一系列操作,同樣也可以爬取需要的內(nèi)容。

這里,我們需要首先在PC端安裝Appium軟件,安裝下載的地址如下:https://github.com/appium/appium-desktop/releases

安裝軟件的步驟非常簡單,就與大多數(shù)軟件安裝步驟一樣,這里不在贅述。

但是只安裝Appium軟件并不能操作手機App,還需要下載專業(yè)的Android工具Android SDK,這里讀者可以直接下載安裝Android Studio即可,安裝完成之后,Android SDK也就安裝完成了。

基礎(chǔ)的配置到這里就結(jié)束了。下面,我們來通過Appium軟件操作手機App。

查找Android App的Package和入口

這里,博主主要介紹如何操作Android手機,感興趣的可以自己查閱資料配置IOS端。我們先來打開Appium軟件,看看其登錄界面。


如上圖所示,我們不需要更改任何參數(shù),只需要點擊"Start Server v1.18.0"按鈕,進行登錄操作,登錄之后,會出現(xiàn)如下界面。


這里,我們點擊放大鏡即可。點擊之后,會出現(xiàn)步驟4的界面,我們需要在這里界面之中配置你需要操作或者說爬取的App。

比如,這里博主需要爬取微博App的數(shù)據(jù),那么你需要下載微博App的.apk安裝文件,然后通過反編譯查找其包名與啟動界面。具體反編譯步驟如下:


如上圖所示,我們需要通過壓縮文件打開weibo.apk安裝包,將AndroidManifest.xml拷貝出來。然后通過AXMLPrinter2.jar工具反編譯AndroidManifest.xml,默認AndroidManifest.xml是亂碼,反編譯命令如下:

java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

然后,我們在打開其AndroidManifest.txt就可以看到微博的包名以及啟動界面的Activity名稱,具體如下所示:


這里,我們得到微博的包名為:com.sina.weibo,而微博的啟動界面為:com.sina.weibo.MainTabActivity。接著,可以配置Appium軟件,效果如下:


這里,讀者可以直接點擊Start Session,也可以點擊保存Save As方便下一次直接使用。這里,博主先保存再點擊Start Session(注意,deviceName是關(guān)于手機里面的設(shè)備名稱,并不一定是你的手機名稱):


可以看到,現(xiàn)在我們的微博手機界面已經(jīng)在Appium軟件上顯示了。下面,我們可以使用上面的眼睛按鈕,監(jiān)聽我們要操作的步驟,然后保存為一個動作鏈。

記錄微博刷新動作

在實際的微博中,我們通過下拉刷新微博界面。不過,其實還可以通過點擊底部的首頁按鈕進行刷新,記錄操作并生成Python代碼的步驟如下所示:


這里,我們需要先點擊上面的眼睛記錄我們后續(xù)的操作。然后你可以選中首頁按鈕,再點擊最右邊的Tap,即完成了首頁的刷新動作,同時也會生成對應(yīng)的操作代碼:


默認生成的操作語言是Java,你可以通過上圖下拉選擇自己需要的語言。這里,博主選擇Python,畢竟講解的是Python爬蟲。

雖然上面的代碼確實是操作手機App的代碼,但是你直接copy到python編輯器,肯定是無法運行的,我們需要安裝Appium-Python-Client包:

pip install Appium-Python-Client

安裝完成之后,我們通過”from appium import webdriver“引入開發(fā)包,然后就可以通過上面的代碼進行App爬蟲或者說一系列動作鏈的操作了。

這里,我們先來實現(xiàn)將剛才通過Appium的操作,全部轉(zhuǎn)換為代碼形式,具體代碼如下所示:

from appium import webdriver
import time
server="http://localhost:4723/wd/hub"
desired_caps = {
    "platformName": "Android",
    "deviceName": "liyuanjing",
    "appPackage": "com.sina.weibo",
    "appActivity": "com.sina.weibo.MainTabActivity",
}
driver=webdriver.Remote(server,desired_caps)
time.sleep(10)
el2 = driver.find_element_by_accessibility_id("首頁")
el2.click()

如上面代碼所示,這樣我們就實現(xiàn)了通過軟件操作App的全部步驟。不過,這里有一個小問題,因為打開App首次都是要賦予權(quán)限的,博主剛才手動關(guān)了,并沒有錄制這個動作。

所以,讀者可以自己把賦予權(quán)限的步驟也錄制進去,那么就是全自動了,這里作者偷個懶,就不錄制了。

爬取微博第一條信息

剛剛我們通過刷新的步驟,重新獲取了一遍微博首頁的內(nèi)容。現(xiàn)在,我們通過代碼來獲取首頁第一條微博的內(nèi)容。我們先來看看代碼:

from appium import webdriver
import time

server = "http://localhost:4723/wd/hub"
desired_caps = {
    "platformName": "Android",
    "deviceName": "liyuanjing",
    "appPackage": "com.sina.weibo",
    "appActivity": "com.sina.weibo.MainTabActivity",
}
driver = webdriver.Remote(server, desired_caps)
time.sleep(10)
descs = driver.find_element_by_id("com.sina.weibo:id/contentTextView")
print(descs.get_attribute("content-desc"))

這里,我們通過ID找到了第一條微博的控件,同時通過其屬性"content-desc"獲取到了微博的內(nèi)容。圖解效果如下:


運行之后,效果如下:


當然,這里之所以不同是因為我們手機運行代碼將微博界面又重新啟動了一遍。不過這是我們手機運行后的第一條微博的信息。

到此這篇關(guān)于Python使用Appium在移動端抓取微博數(shù)據(jù)的實現(xiàn)的文章就介紹到這了,更多相關(guān)Python Appium抓取微博數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python+Appium新手教程
  • Python3+Appium安裝及Appium模擬微信登錄方法詳解
  • 詳解使用python爬取抖音app視頻(appium可以操控手機)
  • Python實現(xiàn)Appium端口檢測與釋放的實現(xiàn)
  • Python3+Appium安裝使用教程
  • python爬蟲之Appium爬取手機App數(shù)據(jù)及模擬用戶手勢

標簽:樂山 上海 新疆 滄州 沈陽 河南 紅河 長治

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Python使用Appium在移動端抓取微博數(shù)據(jù)的實現(xiàn)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    来宾市| 清丰县| 邳州市| 孙吴县| 合阳县| 屯门区| 清远市| 平顶山市| 宁安市| 海宁市| 方山县| 峡江县| 武川县| 阿城市| 绥德县| 西峡县| 南雄市| 金乡县| 陵川县| 璧山县| 民丰县| 民权县| 辉南县| 任丘市| 沿河| 玛多县| 孟州市| 晋中市| 乌什县| 隆德县| 滕州市| 建德市| 涞源县| 苏州市| 桦甸市| 平罗县| 陇南市| 麟游县| 竹溪县| 白水县| 山西省|