用基于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 相关文章推荐
python编程开发之日期操作实例分析
Nov 13 Python
Python随机数random模块使用指南
Sep 09 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
python os用法总结
Jun 08 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
Python函数参数操作详解
Aug 03 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
php 结果集的分页实现代码
2009/03/10 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
Javascript 构造函数 实例分析
2008/11/26 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
js 颜色选择插件
2017/01/23 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
Python做简单的字符串匹配详解
2017/03/21 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
Python单元测试与测试用例简析
2019/11/09 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
台湾三立电视电商平台:电电购
2019/09/09 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
意外伤害赔偿协议书
2014/09/16 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书