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

前情提要

因工作需要,需要爬取相关数据,之前是爬取网页数据,可以用python的requests和Selenium进行爬取。但b站的直播消费数据网页版不能显示,只能在手机上看到,所以就有了这篇文章。
之前看文章说fiddler也可以进行爬取,但尝试了一下没成功,这次选择appium进行爬取。类似的,可以运用爬取微信朋友圈和抖音等手机app相关数据

正文

#环境配置参考
前期工作准备,需要安装python、jdk、PyCharm、Appium-windows-x.x、Appium_Python_Client、Android SDK,pycharm可以用anaconda的jupyter来替代
具体可以参考这篇博客,讲的算是很清楚啦

https://blog.csdn.net/weixin_42617600/article/details/114111785

前期准备工作配置需要不停的安装和配置环境变量,也是个相对枯燥的过程
完成以后就可以真正爬取啦

导入模块

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

b站直播消费记录爬取相关推荐

  1. 【爬虫】基于requests的B站直播实时弹幕爬取

    ​​​​​​ 网页分析 进入Network在众多响应中寻找和弹幕相关的API, 图3-1 B站直播房间页面的开发者工具界面preview 图3-2 在3-2展示的页面中可以查看到URL中有参数room ...

  2. 新浪体育——篮球足球的直播和战报爬取

    新浪体育--篮球足球的直播和战报爬取 用到的包的介绍 以上是基于python3.6.5的新浪体育直播间篮球足球的直播和战报爬取所引用到的全部内外部包,下面将会挑几个与爬虫息息相关的包进行介绍. 1.l ...

  3. 爬虫入门实战第一站——梨视频视频爬取

    爬虫入门实战第一站--梨视频视频爬取 简介 博主最近重新开始了解爬虫,想以文字方式记录自己学习和操作的过程.本篇文章主要是使用爬虫爬取梨视频网站中的视频并下载到本地,同时将视频简介和视频网站保存在ex ...

  4. python爬虫,记录爬取全球所有国家-首都的简单爬虫

    python爬虫,记录爬取全球所有国家-首都的简单爬虫 本来以为简单至极,没想到获取数据还是花费了大把功夫.先上图 <table> <tr> <td> <st ...

  5. 爬虫项目——B站石原里美视频数据爬取

    爬虫项目--B站石原里美视频数据爬取 1. 爬虫原理 2. 数据爬取 2.1 库函数的引用 2.2 定义URL翻页函数 2.3 定义储存TXT文件函数 2.4 定义爬取函数 2.5 主函数 2.6 运 ...

  6. python3抓取b站弹幕_python3写爬取B站视频弹幕功能

    需要准备的环境: 一个B站账号,需要先登录,否则不能查看历史弹幕记录 联网的电脑和顺手的浏览器,我用的Chrome Python3环境以及request模块,安装使用命令,换源比较快: pip3 in ...

  7. python爬取b站弹幕_如何爬取B站弹幕

    前言 主要记录自己完成爬虫的思路:从how to do到what to do这是一个拿 python 练手的项目,虽说是入门级,但其余爬虫也万变不离其宗 ̄へ ̄ [源代码地址 Github:bili-d ...

  8. 记录爬取2470条数据

    由于爬取了几百条之后,生成的文件就是30多MB啦.所以分成1000,500,500,470.4个批次. 不过,要手动挪一下.[就是把之前第一页生成的挪过来.] 列表文件,和基础信息文件.都弄成空列表! ...

  9. python爬取b站排行榜_实时爬取B站排行榜并保存为表格——每周一个爬虫小教程系列...

    从这周开始,每周来一个爬虫小教程,希望对你们有所帮助,这次的目标是B站排行榜至于爬取什么内容,目前感觉就把序号,名称以及评分爬取下来吧(因为我是边写教程边写代码的) 这次需要用到的知识:Request ...

最新文章

  1. EBS-使用 fnd_user_pkg API 创建用户,添加职责,修改用户
  2. 互联网协议 — TCP — (面向面向连接的)三次握手、四次挥手
  3. 《一起》个人进展——Day02
  4. MFC80.DLL复制到程序目录中,也有的说复制到安装目录中
  5. 旋转函数_【视频课】:一次函数拓展应用(图象的平移、旋转、轴对称及5种解题方法)...
  6. UVA - 10340 ​​​​​​​All in All
  7. 配置nginx作为下载站点
  8. MATLAB2014b安装
  9. IDEA external library 这个里面是空的怎么办
  10. 计算机控制机器人运动的原理,工业机器人控制系统的基本原理
  11. C3AE人脸年龄识别算法
  12. 自己修好了乐视电视!
  13. 三菱触摸屏与三菱L系类PLC以太网通讯
  14. SEED LABS初入
  15. 【Scratch二次开发】03-构建桌面应用
  16. C语言中fseek函数
  17. 利用状态机及Astar插件实现dots下寻路
  18. 中国人工智能学会通讯——当巧妇遇到“大米”——机器翻译启示录
  19. maglev need 64-bit linux version
  20. 你还要我怎样计算机音乐,你还要我怎样是什么歌抖音?

热门文章

  1. strcmp函数实现及分析
  2. 电机的matlab仿真实例,电机控制Matlab仿真模型
  3. 数据预处理--上采样(过采样)与下采样(降采样)
  4. 安装与使用 supervisor(可管理Tomcat进程)
  5. 从0开始学Logisim,计算机硬件系统设计(1)
  6. 顺序消费可没你想的这么简单,队列数量的变更往往无法保证同一个账号的消息发送到同一个分区,怎么解决?
  7. 隐马尔可夫模型(一):模型介绍
  8. ajax请求失败readyState为0
  9. PostgreSQL 14 pageinspect新增gist索引支持
  10. C#.net 微信公众账号接口开发