autojs脚本引擎调用java的jsoup爬取科学网博客的指定id的好友名字

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

说明

本文提供的代码仅供参考。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。

Auto.js简介

Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。

Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。

开发文档

Auto.js Pro开发文档优化版
文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。
模板、样式、generator来自Node.js。

为什么要使用Auto.js Pro开发脚本,有什么特点?

吸引我使用Auto.js Pro的原因有很多。最主要的几个原因是:

  • Auto.js Pro能开发免ROOT的安卓脚本
  • Auto.js Pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
  • Auto.js Pro丰富的UI组件,能自定义各种样式的安卓界面
  • Auto.js Pro使用的javascript的语法比较优雅,代码可读性强
  • Auto.js Pro的命令库非常的丰富,接口比较多
  • Auto.js Pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5M,还没有广告

相关教程

Auto.js Pro安卓全分辨率免ROOT引流脚本开发教程

示例代码

// 时间     2019 1 8
// 脚本作用: autojs使用jsoup的demo
// 脚本内容: 爬取科学网  博客的  指定id的好友名字
// 需要导入jsoup.
// jsoupDemo.js
console.show()
runtime.loadJar('/sdcard/jsoup.jar')
importClass("org.jsoup.Jsoup")
importClass("java.io.IOException")
importClass("java.util.HashMap")
importClass("org.jsoup.Jsoup")
importClass("org.jsoup.nodes.Document")
importClass("org.jsoup.nodes.Element")
importClass("org.jsoup.select.Elements")

function Spider(url) {
  this.CrawlName = function (url) {
    var tmp = new HashMap();
    try {
      var doc = Jsoup.connect(url)
        .header("User-Agent",
          "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
        .get();
      var links = doc.select("dt a");
      links = links.toArray()
      for (let i = 0; i < links.length; i++) {
        var link = links[i]
        if (link.hasAttr("style")) {
          tmp.put(parseInt(link.attr("href").substring(link.attr("href").indexOf("uid=") + 4)), link.attr("title"));
        }
      }
      log(tmp)
      return (tmp);
    } catch (e) {
      log(e)
    }
    return (null);
  }
  var data = this.CrawlName(url);
  this.getName = function (id) {
    if (data != null) {
      log('id: %d - name: %s', id, data.get(id));
    }
  }
}
s = new Spider("http://blog.sciencenet.cn/home.php?mod=space&uid=215715&do=friend&view=me&from=space");
s.getName(71079);

猜你喜欢

转载自blog.csdn.net/feiyunjs/article/details/94726555
今日推荐