溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

android抖音數(shù)據(jù)采集的方法

發(fā)布時間:2022-03-21 16:45:32 來源:億速云 閱讀:885 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“android抖音數(shù)據(jù)采集的方法”,在日常操作中,相信很多人在android抖音數(shù)據(jù)采集的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”android抖音數(shù)據(jù)采集的方法”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

本次用到的工具:移動端自動化工具Appium,夜神模擬器(也可以用真機(jī)代替),adb工具。

運(yùn)行環(huán)境準(zhǔn)備工作

開始進(jìn)入數(shù)據(jù)采集的準(zhǔn)備工作,在上一篇文章的基礎(chǔ)上,搭建自動化環(huán)境,首先需要配置android-sdk,安裝教程可參考如下鏈接,最后需要驗(yàn)證adb命令是否可用,在命令行窗口運(yùn)行adb version,出現(xiàn)版本號信息,說明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

下載好后基本是下一步安裝,安裝完成后啟動應(yīng)用,出現(xiàn)如下窗口證明安裝成功:<br>android抖音數(shù)據(jù)采集的方法

點(diǎn)擊 “Start Server V 1.9.0”啟動服務(wù),出現(xiàn)如下頁面則證明啟動成功,端口為4723:<br>android抖音數(shù)據(jù)采集的方法

打開之前配置好的模擬器,此時在命令行窗口運(yùn)行adb devices,會出現(xiàn)連接的模擬器設(shè)備,證明運(yùn)行環(huán)境準(zhǔn)備完成<br>android抖音數(shù)據(jù)采集的方法

接下來是運(yùn)行環(huán)境配置,點(diǎn)擊appium的 Start Inspector Session<br>android抖音數(shù)據(jù)采集的方法

需要配置如下啟動參數(shù):<br>android抖音數(shù)據(jù)采集的方法

{
    "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:模擬器運(yùn)行的平臺,填入Android<br>platformVersion:查看模擬器的安卓版本,填入即可<br>deviceName:此處為運(yùn)行adb devices命令得到的設(shè)備,當(dāng)前模擬器為127.0.0.1:62001<br>appPackage和appActivity:抖音app的包名和啟動方法名,可通過android-sdk\build-tools\29.0.2下面的aapt.exe工具獲得<br>配置好后,點(diǎn)擊Star Session,看到模擬器啟動抖音app則證明環(huán)境配置無誤。

android抖音數(shù)據(jù)采集的方法

業(yè)務(wù)場景說明

有了運(yùn)行環(huán)境,接下來介紹下本次的需求,打開模擬器中安裝的抖音app,首先下滑刷新視頻,再進(jìn)入用戶主頁,分別對主頁數(shù)據(jù),關(guān)注數(shù)據(jù),粉絲數(shù)據(jù),作品和喜歡頁簽進(jìn)行采集。appium需要做的對應(yīng)操作如下:<br>1.下滑刷新視頻<br>2.左滑進(jìn)入用戶主頁<br>3.點(diǎn)擊關(guān)注按鈕<br>4.開始下滑關(guān)注列表,直到出現(xiàn)“暫時沒有更多了”<br>5.返回用戶主頁<br>6.點(diǎn)擊粉絲按鈕<br>7.開始下滑粉絲列表,直到出現(xiàn)“暫時沒有更多了”<br>8.返回用戶主頁<br>9.點(diǎn)擊作品頁簽<br>10.下滑作品視頻列表,直到出現(xiàn)“暫時沒有更多了”<br>11.點(diǎn)擊喜歡頁簽<br>12.下滑喜歡視頻列表,直到出現(xiàn)“暫時沒有更多了”<br>13.返回視頻頁面,重復(fù)步驟1

代碼準(zhǔn)備

安裝python的Appium客戶端:

pip install Appium-Python-Client

準(zhǔn)備擼代碼。<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之后,我們開始處理業(yè)務(wù)1,下滑刷新視頻,此處調(diào)用自己封裝的滑動方法:

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)

等待視頻刷新出來后執(zhí)行業(yè)務(wù)2,快速左滑進(jìn)入用戶主頁:

flick_page(device_driver, 0.8, 0.5, 0.2, 0.5)

此處flick方法和swipe方法內(nèi)部是一樣的,appium提供了兩個滑動方法,swipe為普通滑動,通過給定坐標(biāo)進(jìn)行滑動,flick為快速滑動,通過給定坐標(biāo)滑動之后開始做均減速滑動直到停止,滑動速度較快。<br>進(jìn)入用戶主頁之后,我們需要判斷按鈕的id,標(biāo)簽位置等參數(shù)來進(jìn)行點(diǎn)擊,接下來主要介紹如何獲取【關(guān)注】的標(biāo)簽位置:<br>使用appium啟動app后,手動滑動進(jìn)入用戶主頁,此時刷新appium頁面中間的刷新按鈕,點(diǎn)擊左邊的【關(guān)注】,此時可以看到中間列出的xml結(jié)構(gòu),以及右側(cè)的按鈕基本信息,通過這些信息,可以得到一個關(guān)注按鈕的Xpath:

//android.widget.TextView[@text='關(guān)注']

android抖音數(shù)據(jù)采集的方法<br>再對這個按鈕進(jìn)行點(diǎn)擊即可進(jìn)入關(guān)注頁面,開始循環(huán)下滑到底即可:

driver.find_element_by_xpath("//android.widget.TextView[@text='關(guān)注']").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']

然后點(diǎn)擊返回上一層回到用戶主頁:

driver.find_element_by_xpath("//android.widget.ImageView[@resource-id='com.ss.android.ugc.aweme:id/nj']").click()

android抖音數(shù)據(jù)采集的方法<br>tips:<br>1.獲取xpath不要使用絕對路徑,經(jīng)過大量測試,絕對路徑在不同環(huán)境下是不一樣的,使用相對路徑則比較穩(wěn)定<br>2.可以使用一些頁面文字元素,id進(jìn)行相對定位,再取到最終需要的元素<br>3.不要使用resource-id進(jìn)行定位,經(jīng)過大量測試,這個id不是唯一的,只能定位到第一個<br>4.也可以使用android-sdk\tools下面的uiautomatorviewer工具進(jìn)行xpath定位,不過需要升級uiautomatorviewer,經(jīng)過大量測試,對于抖音app的一些高版本,uiautomatorviewer無法獲取其xpath。<br>通過同樣的方法,分別點(diǎn)擊【關(guān)注】【粉絲】【作品】【喜歡】,即可進(jìn)行一個完整的操作,在使用上一次講到的mitmproxy進(jìn)行代理,將所有的數(shù)據(jù)進(jìn)行解析入庫,便可將所有的數(shù)據(jù)采集到自己的數(shù)據(jù)庫中,或者將視頻下載到本地硬盤。

進(jìn)階

以上方法,經(jīng)過大量的測試,每天采集的數(shù)據(jù)非常有限,問題如下:<br>1.一臺模擬器,滑動速度有限<br>2.數(shù)據(jù)解析效率不高<br>針對以上兩點(diǎn)問題,后來又加入了新方案,支持了模擬器的橫向擴(kuò)展(需要電腦硬件條件達(dá)標(biāo)),以及數(shù)據(jù)的分布式解析,批量入庫。<br>新方案完成后,兩天的測試,使用了兩臺模擬器滑動采集,第一天10小時,采集了53萬數(shù)據(jù),而第二天,做了性能測試,10小時數(shù)據(jù)量竟然達(dá)到了111.6萬,在測試過程中,感覺數(shù)據(jù)解析一直沒有達(dá)到飽和,預(yù)測可以拖4臺模擬器,只是我的電腦硬件配置沒那么高,跑不了4臺模擬器,所以就沒有進(jìn)行極限測試。<br>如下為兩臺模擬器滑動過程截圖,以及每天采集數(shù)據(jù)量的一個統(tǒng)計(jì)圖:<br>android抖音數(shù)據(jù)采集的方法android抖音數(shù)據(jù)采集的方法

到此,關(guān)于“android抖音數(shù)據(jù)采集的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI