前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫学习教程:爬取b站直播消费记录!

Python爬虫学习教程:爬取b站直播消费记录!

作者头像
python学习教程
发布2021-04-23 09:54:52
8100
发布2021-04-23 09:54:52
举报

基于python的Appium进行b站直播消费记录爬取

之前看文章说fiddler也可以进行爬取,但尝试了一下没成功,这次选择appium进行爬取。类似的,可以运用爬取微信朋友圈和抖音等手机app相关数据

正文

#环境配置参考

前期工作准备,需要安装python、jdk、PyCharm、Appium-windows-x.x、Appium_Python_Client、android SDK,pycharm可以用anaconda的jupyter来替代

前期准备工作配置需要不停的安装和配置环境变量,也是个相对枯燥的过程

完成以后就可以真正爬取啦

导入模块

from appium import webdriverimport numpy as npimport pandas as pdimport 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)

打开之后呈现如下页面

在手机上点击我的——我的直播——消费记录,查看个人消费记录,

当然也可以写两行代码来实现这个过程(这里选择跳过),如下图所示

因为这个消费记录很多,一个页面只能显示10条,要想爬取所有的可以设置滑动,边向上滑动边爬取就能获取所有的数据。

具体参数设置的flick_distance=1050可以不重不漏的爬取,如下所示:

设置滑动

flick_start_x=540flick_start_y=192flick_distance=1050while 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=540flick_start_y=192flick_distance=1050while 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)

转换成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)

ok,这样工作就都完成啦,继续快乐的搬砖…

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
  • 导入模块
  • 通过程序打开手机b站app
  • 打开b站
  • 设置滑动
  • 爬取
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档