用基于python的appium爬取b站直播消費(fèi)記錄
基于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來替代
具體可以參考這篇博客,講的算是很清楚啦
前期準(zhǔn)備工作配置需要不停的安裝和配置環(huán)境變量,也是個(gè)相對枯燥的過程
完成以后就可以真正爬取啦
導(dǎo)入模塊
from appium import webdriver import numpy as np import pandas as pd import time
通過程序打開手機(jī)b站app
desired_caps = { 'platformName': 'Android', # 被測手機(jī)是安卓 'platformVersion': '10', # 手機(jī)安卓版本 'deviceName': 'xxx', # 設(shè)備名,安卓手機(jī)可以隨意填寫 'appPackage': 'tv.danmaku.bili', # 啟動(dòng)APP Package名稱 'appActivity': '.ui.splash.SplashActivity', # 啟動(dòng)Activity名稱 'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時(shí)填True 'resetKeyboard': True, # 執(zhí)行完程序恢復(fù)原來輸入法 'noReset': True, # 不要重置App,如果為False的話,執(zhí)行完腳本后,app的數(shù)據(jù)會清空,比如你原本登錄了,執(zhí)行完腳本后就退出登錄了 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' }
打開b站
# 連接Appium Server,初始化自動(dòng)化環(huán)境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 設(shè)置等待時(shí)間,如果不給時(shí)間的話可能會找不到元素 driver.implicitly_wait(4)
打開之后呈現(xiàn)如下頁面
在手機(jī)上點(diǎn)擊我的——我的直播——消費(fèi)記錄,查看個(gè)人消費(fèi)記錄,
當(dāng)然也可以寫兩行代碼來實(shí)現(xiàn)這個(gè)過程(這里選擇跳過),如下圖所示
因?yàn)檫@個(gè)消費(fèi)記錄很多,一個(gè)頁面只能顯示10條,要想爬取所有的可以設(shè)置滑動(dòng),邊向上滑動(dòng)邊爬取就能獲取所有的數(shù)據(jù)。
具體參數(shù)設(shè)置的flick_distance=1050可以不重不漏的爬取,如下所示:
設(shè)置滑動(dòng)
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)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
利用python循環(huán)創(chuàng)建多個(gè)文件的方法
今天小編就為大家分享一篇利用python循環(huán)創(chuàng)建多個(gè)文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10python如何利用matplotlib繪制并列雙柱狀圖并標(biāo)注數(shù)值
Python之中最好的圖表庫叫matplotlib,matplotlib,顧名思義就是提供了一整套和matlab相似的API,它的文檔相當(dāng)完備,下面這篇文章主要給大家介紹了關(guān)于python如何利用matplotlib繪制并列雙柱狀圖并標(biāo)注數(shù)值的相關(guān)資料,需要的朋友可以參考下2022-04-04基于Python實(shí)現(xiàn)文件的壓縮與解壓縮
在日常工作中,除了會涉及到使用Python處理文本文件,有時(shí)候還會涉及對壓縮文件的處理。本文為大家總結(jié)了利用Python可以實(shí)現(xiàn)的幾種文件壓縮與解壓縮實(shí)現(xiàn)代碼,需要的可以參考一下2022-03-03Python爬蟲進(jìn)階之Beautiful Soup庫詳解
這篇文章主要介紹了Python爬蟲進(jìn)階之Beautiful Soup庫詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python爬蟲的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04Python函數(shù)默認(rèn)參數(shù)設(shè)置的具體方法
本文主要介紹了Python函數(shù)默認(rèn)參數(shù)設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-0310行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法
這篇文章主要介紹了10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10python數(shù)據(jù)可視化matplotlib繪制折線圖示例
這篇文章主要為大家介紹了python數(shù)據(jù)可視化matplotlib繪制折線圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06