用基于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采集腾讯新闻实例
Jul 10 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
Python切片操作实例分析
Mar 16 Python
Python实现随机漫步功能
Jul 09 Python
通过python顺序修改文件名字的方法
Jul 11 Python
python存储16bit和32bit图像的实例
Dec 05 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
用Python提取PDF表格的方法
Apr 11 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
什么是短波收听SWL
2021/03/01 无线电
模仿OSO的论坛(五)
2006/10/09 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
js实现随机8位验证码
2020/07/24 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
python实现探测socket和web服务示例
2014/03/28 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
Python中的日期时间处理详解
2016/11/17 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
如何完美的建立一个python项目
2020/10/09 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
《狮子和兔子》教学反思
2014/03/02 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
运动与健康自我评价
2015/03/09 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
实习指导老师意见
2015/06/04 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS