用基于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入门篇之面向对象
Oct 20 Python
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
python中subprocess批量执行linux命令
Apr 27 Python
Django框架使用mysql视图操作示例
May 15 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
python 消除 futureWarning问题的解决
Dec 25 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
树莓派升级python的具体步骤
Jul 05 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 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
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php文件上传的两种实现方法
2016/04/04 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
图文详解WinPE下安装Python
2016/05/17 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
介绍一下游标
2012/01/10 面试题
数据库基础的一些面试题
2012/02/25 面试题
财务会计人员求职的自我评价
2014/01/13 职场文书
大学生秋游活动方案
2014/02/17 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
中国梦读书活动总结
2014/07/10 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
防卫过当辩护词
2015/05/21 职场文书