前言:
本人是在接触python爬虫后,萌发了“Android开发应该也能实现爬虫效果,这样用手机爬是不是会更方便”这一念想。于是兴趣使然就开始了手机爬虫的探索之旅。虽然这路已被探索无数次,但是对于未曾去过的我依旧向往。
一、整装待发:
1)爬虫工具和环境:
- Android系统
- Android studio
2)入手前准备:
- 了解kotlin语言:由于Android studio 4.1使用的是kotlin语言,所以需要自行稍微了解一下其语言特性,如定义方式、逻辑表达式,当然你会发现kotlin语言还是比较友好的。
- 了解线程和多线程
- 了解爬虫流程
- 了解数据长久化
二、地图浏览:
要实现如何手机爬虫,首先要知道爬虫的流程:
1)明确爬取目标
2)伪装访问
3)获取 页源码
4)提取出需要内容(常用手法:洗刷数据)
5)检验提取内容
6)爬取内容
7)爬取内容持久化
三、景点分析
Jsoup使用
访问 页的手法有很多,如get、HttpClient 、HttpURLConnection等,但是我还是比较倾向于Jsoup。除了好用外,更多的是它和python的requests比较相似,所以用起来也比较顺手。
附上常用使用方法:
userAgent:获取方法参考https://jingyan.baidu.com/article/95c9d20d7bca17ec4e7561a4.html
坑点:
(1)这个方法需要配合线程使用,不然会 错。
(2)当地址是下载文件的地址时,可能会 org.jsoup.UnsupportedMimeTypeException: Unhandled content type Must be text/* ,处理手法是加入ignoreContentType函数
常用伪装访问:
1)Jsoup.connect(strvideoUrl).userAgent(…)
2)Jsoup.connect(strvideoUrl).referrer(…)
3)Jsoup.connect(strvideoUrl).cookie(…)
注:括 内的…表示参数,因为懒所以就用…表示。用法类比python的request
提取出需要内容:
利用Document类对象存储的内容进行提取。如何提取,可参考jsoup是如何选择指定元素的
个人极不推荐使用正则来洗刷数据,因为在Android里,正则的匹配率实在是低得感人,不好用。
推荐的手法是,先用Document的select和Elements的getElementsByAttribute函数进行筛选,在Document.select和Elements.getElementsByAttribute无法一步到位精准筛选到目标时,再考虑用Elements.attr()函数进行进一步筛选。
筛选数据常用到的:
1)Document.select
2)Elements.getElementsByAttribute
3)Elements.attr
4)Elements.removeAttr
5)Elements.replace
注:需要进行字符分割时,可以用String自带的split函数进行操作,比较便捷。
数据持久化
所谓的数据持久化,无非就是把数据保存下来,这一步无论在Python爬虫还是今天讲的Android爬虫,都是属于核心部分。下载手法有以下几种:
具体说明参考:Android 文件下载三种基本方式
其实这三种方式,我都试过,最后因为便捷,所以选择了第二个下载方案:Android自定的下载管理。因为这个下载方案是调用了现有的下载框架进行下载,减轻了许多代码量。
优点: 会在notification 显示下载的进度,同时可以暂停、重新连接。
使用手法:
与Python对比:
在Python中下载一般都是使用多线程调用函数下载,但是 “自定的下载管理” 这种下载方案使Android爬虫的下载方式具有一定的先天优势。
视频合并
上爬下来的视频文件一般都是ts文件居多,当然Android是能播放ts文件的,但是一百或几百个ts,一个个播放这也是需要相当的耐心,那合并成一个mp4文件是不是众望所归thon可以通过调用”copy /b“指令进行ts文件合并,那Android是如何把多个ts文件合并成一个文件呢p>
想必很多人在 上搜索过,但是多数搜索到的是使用软件进行合并,但是作为一个开发爱好者,还是想自己的软件能自实现合并。
后感: 经过Android爬虫之旅后,感觉还是Python比较强大。
成果展示:

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92454 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!