用基于python的appium爬取b站直播消费记录

 更新时间:2021年04月16日 16:43:40   作者:mister1  
因工作需要,需要爬取相关数据,之前是爬取网页数据,可以用python的requests和Selenium进行爬取。但b站的直播消费数据网页版不能显示,只能在手机上看到,所以就有了这篇文章。需要的朋友可以参考下

基于python的Appium进行b站直播消费记录爬取

之前看文章说fiddler也可以进行爬取,但尝试了一下没成功,这次选择appium进行爬取。类似的,可以运用爬取微信朋友圈和抖音等手机app相关数据

正文

#环境配置参考

前期工作准备,需要安装python、jdk、PyCharm、Appium-windows-x.x、Appium_Python_Client、Android SDK,pycharm可以用anaconda的jupyter来替代

具体可以参考这篇博客,讲的算是很清楚啦

https://www.jb51.net/article/209859.htm

前期准备工作配置需要不停的安装和配置环境变量,也是个相对枯燥的过程

完成以后就可以真正爬取啦

导入模块

from appium import webdriver
import numpy as np
import pandas as pd
import time

通过程序打开手机b站app

desired_caps = {
    'platformName': 'Android',  # 被测手机是安卓
    'platformVersion': '10',  # 手机安卓版本
    'deviceName': 'xxx',  # 设备名,安卓手机可以随意填写
    'appPackage': 'tv.danmaku.bili',  # 启动APP Package名称
    'appActivity': '.ui.splash.SplashActivity',  # 启动Activity名称
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
    'automationName': 'UiAutomator2'
}

打开b站

# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置等待时间,如果不给时间的话可能会找不到元素
driver.implicitly_wait(4)

打开之后呈现如下页面

在这里插入图片描述

在手机上点击我的——我的直播——消费记录,查看个人消费记录,

当然也可以写两行代码来实现这个过程(这里选择跳过),如下图所示

在这里插入图片描述

因为这个消费记录很多,一个页面只能显示10条,要想爬取所有的可以设置滑动,边向上滑动边爬取就能获取所有的数据。

具体参数设置的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)

在这里插入图片描述

转换成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,这样工作就都完成啦,继续快乐的搬砖…

到此这篇用基于python的appium爬取b站直播消费记录的文章就介绍到这了,更多相关python,appium的内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

相关文章

  • 以文档处理为例讲解豆包API调用教程(Python)

    以文档处理为例讲解豆包API调用教程(Python)

    这篇文章主要介绍了如何在Linux服务器上配置和使用豆包大模型的API,通过API处理200万字的文档,展现了技术的发展和应用,需要的朋友可以参考下
    2025-01-01
  • tensorflow tf.train.batch之数据批量读取方式

    tensorflow tf.train.batch之数据批量读取方式

    今天小编就为大家分享一篇tensorflow tf.train.batch之数据批量读取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 如何在Python中捕获finally语句中异常消息

    如何在Python中捕获finally语句中异常消息

    正常情况下,finally语句不会捕获异常,而是在异常处理完成后执行,那么如何在Python中捕获finally语句中异常消息呢,下面小编就来和大家详细聊聊
    2024-02-02
  • python cumsum函数的具体使用

    python cumsum函数的具体使用

    这篇文章主要介绍了python cumsum函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python连接FTP服务器的实现方法

    python连接FTP服务器的实现方法

    本文主要介绍了python连接FTP服务器的实现方法,主要使用ftp操作进行连接FTP服务器、获取当前目录文件清单、上传文件等操作,具有一定的参考价值,感兴趣的可以了解一下
    2022-06-06
  • Python处理mysql特殊字符的问题

    Python处理mysql特殊字符的问题

    今天小编就为大家分享一篇Python处理mysql特殊字符的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python如何实现机器人聊天

    Python如何实现机器人聊天

    这篇文章主要介绍了Python如何实现机器人聊天,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • python使用cookielib库示例分享

    python使用cookielib库示例分享

    Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持,下面是使用示例
    2014-03-03
  • Python三百行代码实现飞机大战

    Python三百行代码实现飞机大战

    飞机大战想必大家可能玩过微信的这款小游戏,给我的感觉是这款游戏怎么可以做得这么好呢,操作简单,容易上手,简直是“老少皆宜”啊,既然这款游戏这么棒,能否自己动手用 Python 来实现呢?事实证明是可以的
    2022-09-09
  • Python pip更新的两种方式详解

    Python pip更新的两种方式详解

    Pip是用于管理Python软件包的常用命令,Pip命令还用于更新/升级已经安装的Python软件包,下面这篇文章主要给大家介绍了关于Python pip更新的两种方式,需要的朋友可以参考下
    2023-02-02

最新评论