我把灵异过程录下来了,速看!

重大灵异事件!我的手机大半夜地自己在B站看番剧!!!

其实,我利用了appium+python实现手机自动化爬虫B站热门番剧数据功能,具体操作如下:

一、搭建环境

1、搭建环境需要通过pip指令安装好client编程库+Appium Server+JDK(配置环境变量 JAVA_HOME)+SDK(配置环境变量 ANDROID_HOME)

2、环境准备好后,运行准备好的测试程序却报错如下:

运行结果说找不到我的adb程序,于是我检查了appium的环境设置,果然没有填写,于是修改后重新运行。

3、再次运行后报错如下:说无法连接到我的手机
检查方法:查询是谁占用了端口

打开cmd命令窗口输入

netstat -ano | findstr “5037”

找出5037端口占用的应用,杀掉该应用进程

taskkill -f -pid 3116


输入: adb devices -l 再次查看电脑是否连接到了手机

这时,电脑显示已经连接手机,我再次运行测试程序依然报错,找了半天原因不知错哪儿。最后发现原来是自己仗着以前开发过APP,手机已经处于开发者模式所以没有检查手机的“开发人员选项”,真是一个勾勾引发的血案,最简单、最容易被忽略的东西往往害人最深。

二、查找appPackage和appActivity

1、当手机已安装b站时:

执行:adb shell dumpsys activity recents | find “intent={”

获取:appPackage=tv.danmaku.bili;appActivity=.ui.splash.SplashActivity

2、调试完成之后出现了点击搜索栏无法自动弹出键盘的情况:

控制台输入 adb uninstall io.appium.settings 即可恢复。

三、利用界面查看工具查找元素

1、点击start inspector session设置参数


2、找到元素,跳转至番剧表单

3、滚动界面至找到元素“查看完整表单”,若没找到元素,继续滚动。

(1)滚动表单原理:由于每个手机的屏幕尺寸不同,所以先获取当前手机屏幕尺寸,再执行向下滑动的动作。(x1,y1)表示初始位置,(x1,y2)表示滑动的终止位置。

(2)在滑动过程中寻找“查看完整表单”元素:

注意!!!!此处千万不要把element写成了elements,因为写作driver.find_elements_by_id(‘navLL’)的话,target则是一个表单而不是变量。而表单target如果事先没有声明会无法运行,当try后面的内容无法运行时,是无论如何都是找不到‘navll’元素的,所以会一直重复执行向下滑动界面的指令。(因为多打了个s报错,我在这卡了半个小时。。。。。)

4、获取榜单信息


四、小结

此程序为一个简单的app数据爬虫,获取b站app榜单数据。大家可以看到,其实滚动查询元素这个功能并不完善,可以再继续优化。因为对用UiSelector 这个类里面的方法实现元素定位不是很熟悉,所以爬虫结果是有重复的,不过能学好UIAutomator的话,通过父元素、子元素等七大姑八大姨亲戚来定位元素应该会很容易。

爬虫b站数据做下来的感觉就是,爬app中的元素比爬网页麻烦,且调试时候,手机反应速度挺慢的,难怪现在网页爬虫有那么多壁垒,而app爬虫限制就很少。

更新!!!
以上代码提到的问题已经优化,爬虫代码如下:

shows = []
for i in range(4):titles = driver.find_elements_by_class_name("android.view.View")for title in titles:printitle = title.textif printitle in shows:continueshows.append(printitle)print(printitle)_find_by_scroll()

通过新建列表+if语句查重去重,然后打印就ok啦。

重大灵异事件!我的手机大半夜地自己在B站看番剧!!!相关推荐

  1. 灵异事件 !同一个代码在code::blocks和Dev上面运行结果不一样!(一番分析后找到原因!)

    我今天在code的时候发现了一个灵异事件 !同一个代码在code::blocks和Dev上面运行结果不一样! 如图,同一个代码文件在两个编译器上的输出不同: 同样的代码在code::blocks上输出 ...

  2. TextBox灵异事件之背后神秘的深度灵异事件真相揭秘

    最近又忙于秋色园和微博粉丝精灵的开发,本来N天前应该出来的文,迟来了好几天,今天抽空写了写,把事件的真相给大伙说清楚: 上篇:半解TextBox灵异事件背后神秘的深度灵异事件,一文中,一共提出两个问题 ...

  3. 又见灵异事件,li中的span右浮动遇到的问题

    最新又见灵异事件,li中的span右浮动遇到的问题 以下是三零网为大家整理的最新又见灵异事件,li中的span右浮动遇到的问题的文章,希望大家能够喜欢! 新闻列表中为了显示时间,加了个span < ...

  4. 世界十大无法科学解释灵异事件(进来发表自己看发)

    1.法老咒语(世界最大灵异事件)  2.葡萄牙灵异事件(在网上引起了极大的轰动)  3.伦敦塔闹鬼(超著名)  4.20世纪上海滩灵异事件(孟小冬照片灵异事件)  5.鬼脸(墙壁上出现灵异鬼脸)  6 ...

  5. 2017年经历的那些灵异事件

    2017年快要过去了,回顾这一年来,在业务代码里,开发新功能占据70%,修复BUG占了30%,在解决的这些BUG中,大部分都是代码级别的错误,使用 Chrome Devtools 基本都可以解决,但其 ...

  6. 半解TextBox灵异事件背后神秘的深度灵异事件

    2019独角兽企业重金招聘Python工程师标准>>> TextBox灵异事件: 就在前几天,当我来到当下所在的网络时,查看微博粉丝精灵后台时,一件很灵异的事情发生了:TextBox ...

  7. printf 中的伪灵异事件

    printf 中的 %c 输出的伪灵异事件 问题描述: 定位到下面代码,unsigned char数组 fqdn 存放一些字符串.如果按照下面代码编译,则可以正常工作,但如果将 problem lin ...

  8. 提莫隐身+机器人能钩_英雄联盟惊现“灵异事件”,机器还能钩中提莫蘑菇!亚索无辜躺枪...

    原标题:英雄联盟惊现"灵异事件",机器还能钩中提莫蘑菇!亚索无辜躺枪 英雄联盟惊现"灵异事件",机器还能钩中提莫蘑菇!亚索无辜躺枪 相信一些喜欢玩英雄联盟的小伙 ...

  9. 《侠盗飞车手 圣安地列斯》灵异事件

    ROCKSTAR在圣安地列斯中带给我门不只是暴力性×××,还有鬼怪...没碰见过? 这里是一些玩家说的灵异事件,大家有胆量就去求证一下吧... 一.无人驾驶的Glendale 在Chillid山上的树 ...

最新文章

  1. 按下回车表示确定提交
  2. android 请求方式有哪些,Android中的几种网络请求方式详解
  3. Win7 64位系统 注册 ocx控件
  4. python爬虫科研数据提取_python爬虫数据提取四之pyquery
  5. ReactNative 告别CodePush,自建热更新版本升级环境
  6. matlab 读取视频出现的问题
  7. Windows运维的学习笔记
  8. php多个 运算_php计算多个集合的笛卡尔积实例详解
  9. 【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)
  10. w10系统服务器管理器,Win10如何打开服务管理器
  11. 利用逆矩阵解线性方程组_经典Jacobi方法用于求解矩阵特征值
  12. 抽取原理的案例_码迷SEO独家内参(一)百度搜索引擎的工作原理及流程
  13. 高清精美壁纸:2013年4月桌面日历壁纸免费下载
  14. 操作系统(Linux)
  15. CSDN博客运营团队2022年H2总结
  16. Android 最完整的开发工具类(blankj:utilcode)
  17. 18、VXLAN技术介绍与应用场景,附VXLAN手册下载
  18. git clone加速命令 nslookup github.com | nslookup github.global.ssl.fastly.Net
  19. 图文讲解FlashFXP(FTP工具) 使用教程
  20. C#关于List的线程安全问题(二)

热门文章

  1. 《Deep Learning for Computer Vision withPython》阅读笔记-StarterBundle(第6 - 7章)
  2. [telink sig mesh] 周期Publish
  3. 安卓、苹果app_小程序——电商系统(开源免费)
  4. mac清空废纸篓怎么恢复?
  5. 怎么写好一篇接口文档
  6. 搜索引擎Google的小秘密
  7. 启明云端分享|IDO-SOM3568:可用于轻量级人工智能应用
  8. 我在MTK平台下调试音频ALSA
  9. 保护你的眼睛——设置电脑屏幕颜色和ClearType字体
  10. [spm操作] 什么是ROI,如何做ROI以及批量提取ROI的%signal change的示例程序