您好,登錄后才能下訂單哦!
這篇文章主要介紹“android抖音數據采集的方法”,在日常操作中,相信很多人在android抖音數據采集的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”android抖音數據采集的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
本次用到的工具:移動端自動化工具Appium,夜神模擬器(也可以用真機代替),adb工具。
開始進入數據采集的準備工作,在上一篇文章的基礎上,搭建自動化環境,首先需要配置android-sdk,安裝教程可參考如下鏈接,最后需要驗證adb命令是否可用,在命令行窗口運行adb version,出現版本號信息,說明adb工具可用,android sdk下載及安裝教程請參閱如下鏈接:
https://www.cnblogs.com/woniu123/p/10755262.html
配置好android-sdk后,就可以安裝Appium了,下載地址如下,此處我們選擇appium-desktop-setup-1.9.0.exe版本:
https://github.com/appium/appium-desktop/releases/download/v1.9.0/appium-desktop-setup-1.9.0.exe
下載好后基本是下一步安裝,安裝完成后啟動應用,出現如下窗口證明安裝成功:<br>
點擊 “Start Server V 1.9.0”啟動服務,出現如下頁面則證明啟動成功,端口為4723:<br>
打開之前配置好的模擬器,此時在命令行窗口運行adb devices,會出現連接的模擬器設備,證明運行環境準備完成<br>
接下來是運行環境配置,點擊appium的 Start Inspector Session<br>
需要配置如下啟動參數:<br>
{ "platformName": "Android", "platformVersion": "5.1.1", "deviceName": "127.0.0.1:62001", "appPackage": "com.ss.android.ugc.aweme", "appActivity": "com.ss.android.ugc.aweme.main.MainActivity", "noReset": true }
platformName:模擬器運行的平臺,填入Android<br>platformVersion:查看模擬器的安卓版本,填入即可<br>deviceName:此處為運行adb devices命令得到的設備,當前模擬器為127.0.0.1:62001<br>appPackage和appActivity:抖音app的包名和啟動方法名,可通過android-sdk\build-tools\29.0.2下面的aapt.exe工具獲得<br>配置好后,點擊Star Session,看到模擬器啟動抖音app則證明環境配置無誤。
有了運行環境,接下來介紹下本次的需求,打開模擬器中安裝的抖音app,首先下滑刷新視頻,再進入用戶主頁,分別對主頁數據,關注數據,粉絲數據,作品和喜歡頁簽進行采集。appium需要做的對應操作如下:<br>1.下滑刷新視頻<br>2.左滑進入用戶主頁<br>3.點擊關注按鈕<br>4.開始下滑關注列表,直到出現“暫時沒有更多了”<br>5.返回用戶主頁<br>6.點擊粉絲按鈕<br>7.開始下滑粉絲列表,直到出現“暫時沒有更多了”<br>8.返回用戶主頁<br>9.點擊作品頁簽<br>10.下滑作品視頻列表,直到出現“暫時沒有更多了”<br>11.點擊喜歡頁簽<br>12.下滑喜歡視頻列表,直到出現“暫時沒有更多了”<br>13.返回視頻頁面,重復步驟1
安裝python的Appium客戶端:
pip install Appium-Python-Client
準備擼代碼。<br>1.啟動app
device_name = '127.0.0.1:62001' device_port = '4723' desired_caps = { "platformName": "Android", "platformVersion": "5.1.1", "deviceName": device_name, "appPackage": "com.ss.android.ugc.aweme", "appActivity": "com.ss.android.ugc.aweme.main.MainActivity", "noReset": True, "unicodeKeyboard": True, "resetKeyboard": True } device_driver = webdriver.Remote('http://127.0.0.1:' + str(device_port) + '/wd/hub', desired_caps)
等待啟動好了app之后,我們開始處理業務1,下滑刷新視頻,此處調用自己封裝的滑動方法:
swipe_page(device_driver, 0.5, 0.25, 0.5, 0.75) def swipe_page(driver, x1, y1, x2, y2): screen = AppiumOprationPage.get_size(driver) screen_x1 = int(screen[0] * x1) screen_y1 = int(screen[1] * y1) screen_x2 = int(screen[0] * x2) screen_y2 = int(screen[1] * y2) driver.swipe(screen_x1, screen_y1, screen_x2, screen_y2)
等待視頻刷新出來后執行業務2,快速左滑進入用戶主頁:
flick_page(device_driver, 0.8, 0.5, 0.2, 0.5)
此處flick方法和swipe方法內部是一樣的,appium提供了兩個滑動方法,swipe為普通滑動,通過給定坐標進行滑動,flick為快速滑動,通過給定坐標滑動之后開始做均減速滑動直到停止,滑動速度較快。<br>進入用戶主頁之后,我們需要判斷按鈕的id,標簽位置等參數來進行點擊,接下來主要介紹如何獲取【關注】的標簽位置:<br>使用appium啟動app后,手動滑動進入用戶主頁,此時刷新appium頁面中間的刷新按鈕,點擊左邊的【關注】,此時可以看到中間列出的xml結構,以及右側的按鈕基本信息,通過這些信息,可以得到一個關注按鈕的Xpath:
//android.widget.TextView[@text='關注']
<br>再對這個按鈕進行點擊即可進入關注頁面,開始循環下滑到底即可:
driver.find_element_by_xpath("//android.widget.TextView[@text='關注']").click() flick_page(device_driver, 0.5, 0.75, 0.5, 0.25)
完成下滑后,需要用同樣的方法獲取到返回上一層按鈕的xpath:
//android.widget.ImageView[@resource-id='com.ss.android.ugc.aweme:id/nj']
然后點擊返回上一層回到用戶主頁:
driver.find_element_by_xpath("//android.widget.ImageView[@resource-id='com.ss.android.ugc.aweme:id/nj']").click()
<br>tips:<br>1.獲取xpath不要使用絕對路徑,經過大量測試,絕對路徑在不同環境下是不一樣的,使用相對路徑則比較穩定<br>2.可以使用一些頁面文字元素,id進行相對定位,再取到最終需要的元素<br>3.不要使用resource-id進行定位,經過大量測試,這個id不是唯一的,只能定位到第一個<br>4.也可以使用android-sdk\tools下面的uiautomatorviewer工具進行xpath定位,不過需要升級uiautomatorviewer,經過大量測試,對于抖音app的一些高版本,uiautomatorviewer無法獲取其xpath。<br>通過同樣的方法,分別點擊【關注】【粉絲】【作品】【喜歡】,即可進行一個完整的操作,在使用上一次講到的mitmproxy進行代理,將所有的數據進行解析入庫,便可將所有的數據采集到自己的數據庫中,或者將視頻下載到本地硬盤。
以上方法,經過大量的測試,每天采集的數據非常有限,問題如下:<br>1.一臺模擬器,滑動速度有限<br>2.數據解析效率不高<br>針對以上兩點問題,后來又加入了新方案,支持了模擬器的橫向擴展(需要電腦硬件條件達標),以及數據的分布式解析,批量入庫。<br>新方案完成后,兩天的測試,使用了兩臺模擬器滑動采集,第一天10小時,采集了53萬數據,而第二天,做了性能測試,10小時數據量竟然達到了111.6萬,在測試過程中,感覺數據解析一直沒有達到飽和,預測可以拖4臺模擬器,只是我的電腦硬件配置沒那么高,跑不了4臺模擬器,所以就沒有進行極限測試。<br>如下為兩臺模擬器滑動過程截圖,以及每天采集數據量的一個統計圖:<br>
到此,關于“android抖音數據采集的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。