用基于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设计模式之观察者模式实例
Apr 26 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
django利用request id便于定位及给日志加上request_id
Aug 26 Python
对Python中plt的画图函数详解
Nov 07 Python
python实现事件驱动
Nov 21 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
python3 反射的四种基本方法解析
Aug 26 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
Django使用rest_framework写出API
May 21 Python
Flask处理Web表单的实现方法
Jan 31 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
JavaScript中的作用域链和闭包
2012/06/30 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
js面向对象编程总结
2017/02/16 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
vue-cli3+typescript初体验小结
2019/02/28 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
简单了解python PEP的一些知识
2019/07/13 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
python爬虫基础知识点整理
2020/06/02 Python
详解Python多线程下的list
2020/07/03 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
幼儿园开学家长寄语
2014/01/19 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
民事代理词范文
2015/05/25 职场文书
孝女彩金观后感
2015/06/10 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书