基于python的Appium進(jìn)行b站直播消費(fèi)記錄爬取
之前看文章說fiddler也可以進(jìn)行爬取,但嘗試了一下沒成功,這次選擇appium進(jìn)行爬取。類似的,可以運(yùn)用爬取微信朋友圈和抖音等手機(jī)app相關(guān)數(shù)據(jù)
#環(huán)境配置參考
前期工作準(zhǔn)備,需要安裝python、jdk、PyCharm、Appium-windows-x.x、Appium_Python_Client、Android SDK,pycharm可以用anaconda的jupyter來替代
具體可以參考這篇博客,講的算是很清楚啦
https://www.jb51.net/article/209859.htm
前期準(zhǔn)備工作配置需要不停的安裝和配置環(huán)境變量,也是個相對枯燥的過程
完成以后就可以真正爬取啦
from appium import webdriver import numpy as np import pandas as pd import time
desired_caps = { 'platformName': 'Android', # 被測手機(jī)是安卓 'platformVersion': '10', # 手機(jī)安卓版本 'deviceName': 'xxx', # 設(shè)備名,安卓手機(jī)可以隨意填寫 'appPackage': 'tv.danmaku.bili', # 啟動APP Package名稱 'appActivity': '.ui.splash.SplashActivity', # 啟動Activity名稱 'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時填True 'resetKeyboard': True, # 執(zhí)行完程序恢復(fù)原來輸入法 'noReset': True, # 不要重置App,如果為False的話,執(zhí)行完腳本后,app的數(shù)據(jù)會清空,比如你原本登錄了,執(zhí)行完腳本后就退出登錄了 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' }
# 連接Appium Server,初始化自動化環(huán)境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 設(shè)置等待時間,如果不給時間的話可能會找不到元素 driver.implicitly_wait(4)
打開之后呈現(xiàn)如下頁面
在手機(jī)上點擊我的——我的直播——消費(fèi)記錄,查看個人消費(fèi)記錄,
當(dāng)然也可以寫兩行代碼來實現(xiàn)這個過程(這里選擇跳過),如下圖所示
因為這個消費(fèi)記錄很多,一個頁面只能顯示10條,要想爬取所有的可以設(shè)置滑動,邊向上滑動邊爬取就能獲取所有的數(shù)據(jù)。
具體參數(shù)設(shè)置的flick_distance=1050可以不重不漏的爬取,如下所示:
flick_start_x=540 flick_start_y=192 flick_distance=1050 while True: driver.swipe(flick_start_x,flick_start_y+flick_distance,flick_start_x,flick_start_y)
pay_name_list=[] present_price_list=[] pay_room_list=[] pay_ru_name_list=[] pay_time_list=[] flick_start_x=540 flick_start_y=192 flick_distance=1050 while True: pay_name=driver.find_elements_by_id('pay_name') for i in range(len(pay_name)): pay_name_list.append(pay_name[i].text) present_price=driver.find_elements_by_id('present_price') for i in range(len(present_price)): present_price_list.append(present_price[i].text) pay_room=driver.find_elements_by_id('pay_room') for i in range(len(pay_room)): pay_room_list.append(pay_room[i].text) pay_ru_name=driver.find_elements_by_id('pay_ru_name') for i in range(len(pay_ru_name)): pay_ru_name_list.append(pay_ru_name[i].text) pay_time=driver.find_elements_by_id('pay_time') for i in range(len(pay_time)): pay_time_list.append(pay_time[i].text) driver.swipe(flick_start_x,flick_start_y+flick_distance,flick_start_x,flick_start_y) time.sleep(2)
轉(zhuǎn)換成dataframe
a=pd.DataFrame([pay_name_list,present_price_list,pay_room_list,pay_ru_name_list,pay_time_list],index=['pay_name_list','present_price_list','pay_room_list','pay_ru_name_list','pay_time_list']) pd.DataFrame(a.T).head(50)
ok,這樣工作就都完成啦,繼續(xù)快樂的搬磚…
到此這篇用基于python的appium爬取b站直播消費(fèi)記錄的文章就介紹到這了,更多相關(guān)python,appium的內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
標(biāo)簽:呼和浩特 衡水 畢節(jié) 湖州 駐馬店 江蘇 中山 股票
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用基于python的appium爬取b站直播消費(fèi)記錄》,本文關(guān)鍵詞 用,基于,python,的,appium,爬取,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。