Iritix

Android图片爬虫,从指定网页开始抓取站内jpg、png、gif图片并显示。

有三大部分组成:SpiderActivity、BrowserActivity、SpiderService。

SpiderActivity负责管理抓图项目和浏览图片。通过与SpiderService的跨进程AIDL接口发送命令和接收应答,实现新增、删除、开始、暂停抓图项目、接收新下载图片、查看下载进度信息。基于Android图库应用Gallery3D的OpenGL库实现了流畅高效的缩略图和全图界面。缩略图界面支持滚动条,支持打开、返回、过滚动动画,支持缩放、返回、详情手势。支持多选分享图片,支持侧滑界面显示图片下载信息。通过多线程并行加载,实现了滑动缩略图界面时的快速加载。并且由于采用了Bitmap复用技术,避免大区块内存的频繁分配释放,从而做到缩略图界面快速滑动时几乎无卡顿。全图界面支持图片横向层叠切换,支持双击、双指缩放,支持返回、详情手势。同样采用区块Bitmap复用技术,保证图片切换操作和动画的流畅。缩略图和全图界面均支持鼠标滚轮滑动切换操作,和键盘或遥控器的方向键选择、切换操作。

BrowserActivity负责浏览和选择抓图页面。通过对WebView控件的封装实现了一个简易的浏览器界面。地址栏支持网址输入、直接搜索、切换搜索引擎、刷新、停止按钮,导航栏支持前进、后退、开始抓图、进入主页按钮,菜单栏支持加入书签、分享、切换UA、刷新、退出按钮。主页界面支持书签、历史、关于界面显示。通过SQLite存储浏览器的书签历史设置数据。

SpiderService负责遍历站内网页和下载图片。支持最多5项目并行下载,项目内最多10图片并行下载。使用WebView加载网页,通过WebView的JS接口获取网页和图片链接,并且能够兼容部分延迟动态加载图片的网页。通过使用SpiderService单独进程和占用内存过高时自动重启进程的方案,避免了Android4.X系统WebView内存泄漏的问题。支持根据项目设置实现网页链接、网页标题、网页内容过滤。使用SQLite存储项目网页链接、图片链接、已下载图片信息。通过网页链接数据表的链表结构和对比链接相似度的方法尽量保证图片下载的顺序。通过对比图片MD5值过滤不同链接的相同图片。另外通过对网页链接表和图片链接表使用LRU缓存,加快了扫描和新增链接的速度。在往外接USB机械硬盘下载图片的测试中,单个项目图片和网页链接数分别超过百万情况下,单页面扫描时间仍然能够保持在50~500ms的可用范围内。

Google Play地址:https://play.google.com/store/apps/details?id=com.gk969.ImgSpider

APK下载地址:https://github.com/gk969/Iritix/raw/master/iritix.apk

演示视频:https://www.youtube.com/watch?v=-ICNt4vc6WA

发表评论

电子邮件地址不会被公开。

*