用基于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进阶教程之异常处理
Aug 30 Python
python交互式图形编程实例(一)
Nov 17 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
python图形用户接口实例详解
Dec 16 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
python中return不返回值的问题解析
Jul 22 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 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
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
BootStrap selectpicker
2016/06/20 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
如何将json数据转换为python数据
2020/09/04 Python
python批量生成条形码的示例
2020/10/10 Python
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
C语言开发工程师测试题
2016/12/20 面试题
介绍一下Linux中的链接
2016/05/28 面试题
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
投资合作意向书范本
2015/05/08 职场文书
七年级上册生物的课件
2019/08/07 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
一文搞懂Python Sklearn库使用
2021/08/23 Python
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技