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


Posted in Python onApril 17, 2021

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

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

正文

#环境配置参考

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

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

https://www.3water.com/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)

打开之后呈现如下页面

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

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

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

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

因为这个消费记录很多,一个页面只能显示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)

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

转换成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)

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

ok,这样工作就都完成啦,继续快乐的搬砖…

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

Python 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
Python编写检测数据库SA用户的方法
Jul 11 Python
python中文编码与json中文输出问题详解
Aug 24 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 Python
django框架两个使用模板实例
Dec 11 Python
python实现音乐播放器 python实现花框音乐盒子
Feb 25 Python
jupyter note 实现将数据保存为word
Apr 14 Python
keras 读取多标签图像数据方式
Jun 12 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
Python中os模块的简单使用及重命名操作
Apr 17 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 Python
解决numpy数组互换两行及赋值的问题
Apr 17 #Python
用Python实现Newton插值法
Apr 17 #Python
Python+Appium新手教程
Pytest之测试命名规则的使用
Apr 16 #Python
pycharm debug 断点调试心得分享
Python通过m3u8文件下载合并ts视频的操作
Python实现Telnet自动连接检测密码的示例
You might like
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
jquery获取radio值实例
2014/10/16 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
详解Python中的多线程编程
2015/04/09 Python
Python实现提取文章摘要的方法
2015/04/21 Python
Python中的自省(反射)详解
2015/06/02 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
中专生自荐信
2013/10/12 职场文书
财务部岗位职责
2013/11/19 职场文书
电气工程自动化求职信
2014/03/14 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
社团活动总结格式
2014/08/29 职场文书
大二学生自我检讨书
2014/10/23 职场文书
结婚典礼致辞
2015/07/28 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android