最近发现抖音有一个新功能,可以显示抖音的在线状态,如下图所示:
于是我突发奇想,决定用python监控一下某位好友的在线状态,没想到还有意外的收获。
本次监控主要用到python的appium库,关于appium的使用和安装,网站有很多教程,但是我一个都没试成功过,于是我一咬牙自己做了一套,教程在文末,不成功过来找我!!!
首先用appium客户端打开抖音,配置如下:
{ "platformName": "Android", "deviceName": "VOG-AL00", "appPackage": "com.ss.android.ugc.aweme", "appActivity": ".main.MainActivity", "noReset": "true", "fullReset": "false" }
点击start session:
点击“消息”元素:
再点击进入聊天窗口:
显示在线状态元素的id为:
com.ss.android.ugc.aweme:id/blc
那么,我们只需要在当前页面一直请求获取该元素的值就可以获取该好友的在线状态了,如果返回“在线”,则判该用户在线;否则,判为不在线。
Python代码撸起来!!!
desired_caps = { "platformName": "Android", "deviceName": "MHA_AL00", "appPackage": "com.ss.android.ugc.aweme", "appActivity": ".main.MainActivity", "noReset": "true", "fullReset": "false" } server = 'http://localhost:4723/wd/hub' driver = webdriver.Remote(server, desired_caps)
2.依次点击进入消息列表、用户聊天窗
driver.find_element_by_xpath('//android.widget.TextView[contains(@text, "消息")]').click() time.sleep(1) driver.find_element_by_xpath('//android.widget.TextView[contains(@text, "好友昵称")]').click()
3.获取在线状态和时间并保存
while True: status=driver.find_element_by_id('com.ss.android.ugc.aweme:id/blc').text strtime = time.strftime("%H:%M:%S", time.localtime(time.time())) if status=='在线': status='在线' else: status='不在线' wb = xlrd.open_workbook('1.xls') tabsheet = wb.sheets()[0] k = tabsheet.nrows # 表格已有的行数 worksheet.write(k , 0, i['name']) worksheet.write(k , 1, i['addr']) time.sleep(60)
4.根据在线状态画出折线图
import pandas as pd import pyecharts.options as opts from pyecharts.charts import Line df = pd.read_excel('在线时间.xls',usecols=['时间', '状态']) x=df['时间'].values.tolist() y=df['状态'].values.tolist() line=( Line() .add_xaxis(xaxis_data=x) .add_yaxis(series_name="在线时间",y_axis=y, is_step=True) .set_global_opts(title_opts=opts.TitleOpts(title="抖音在线时间折线图")) ) line.render_notebook()
你能从图中发现什么秘密吗?
本文代码、Appium安装和使用教程获取方式如下:
近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地