用基于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程序员开发中常犯的10个错误
Jul 07 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
Python基础教程之正则表达式基本语法以及re模块
Mar 25 Python
Python 含参构造函数实例详解
May 25 Python
python多进程控制学习小结
Oct 31 Python
详解Python字典的操作
Mar 04 Python
Python定时任务APScheduler的实例实例详解
Jul 22 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
python如何设置静态变量
Sep 07 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
python 制作简单的音乐播放器
Nov 25 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 number_format() 函数定义和用法
2012/06/01 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
实例讲解Python中函数的调用与定义
2016/03/14 Python
Django之路由层的实现
2019/09/09 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
python开根号实例讲解
2020/08/30 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
《我要的是葫芦》教学反思
2014/02/23 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
实习报告怎么写
2019/06/20 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL