快速入门手机爬虫

前言:
本人是在接触python爬虫后,萌发了“Android开发应该也能实现爬虫效果,这样用手机爬是不是会更方便”这一念想。于是兴趣使然就开始了手机爬虫的探索之旅。虽然这路已被探索无数次,但是对于未曾去过的我依旧向往。

一、整装待发:

1)爬虫工具和环境:

  1. Android系统
  2. Android studio

2)入手前准备:

  1. 了解kotlin语言:由于Android studio 4.1使用的是kotlin语言,所以需要自行稍微了解一下其语言特性,如定义方式、逻辑表达式,当然你会发现kotlin语言还是比较友好的。
  2. 了解线程和多线程
  3. 了解爬虫流程
  4. 了解数据长久化

二、地图浏览:

要实现如何手机爬虫,首先要知道爬虫的流程:
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进行处理,非常感谢!

上一篇 2020年10月6日
下一篇 2020年10月6日

相关推荐