【问题标题】:extract information from a javascript file to a remote site从 javascript 文件中提取信息到远程站点
【发布时间】:2016-09-01 10:15:05
【问题描述】:

我需要提取网站的 Html 和 Javascript 中包含的信息。至于 html,我已经通过使用名为 jsoup 的 java 库成功实现了这一点,但现在我想从同一站点的 js 文件中推断变量的内容。

我该怎么做?提前致谢

【问题讨论】:

  • 不清楚:您要提取 javascript 文件的内容吗?你想用动态内容解析 html 页面,从而产生 von javascript 处理吗?如果没有 url 和所需输出的描述,问题就很笼统了。可能是,HtmlUnit 可以帮助你(有限 js 支持的无头 Java 浏览器)。
  • 我正在创建一个 Android 应用程序,我需要将 javascript 文件中的变量 content 的值外推到远程站点,例如 www.google.com ,我需要动态地执行此操作这个变量的值每次都会改变
  • 由于是Android,所以可以使用WebView。查看相关答案:stackoverflow.com/a/39174441/1661938

标签: javascript java parsing jsoup


【解决方案1】:

我想在同一站点的 js 文件中推断变量的内容开始

试试这个:

// ** Exception handling removed ** //

Document doc = Jsoup.connect(websiteUrl).get();

String jsFilesCssQuery = "script[src]";
for(Element script : doc.select(jsFilesCssQuery) {
    // You may add further checks on the script element found here...
    // ...

    // Download JS code
    Connection.Response response = Jsoup //
      .connect(script.absUrl("src")) //
      .userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36") //
      .ignoreContentType(true) // To force Jsoup download the JS code
      .referrer(doc.location()) //
      .execute(); //

   String jsCode = new String( //
          response.bodyAsBytes(), //
          Charset.forName(response.charset()) //
   );

   // Do extraction on jsCode here...
   // ...
}

【讨论】:

  • 完美,这行得通。现在我可以推断这个文件中变量的内容了吗?
  • String jsCode = new String( response.bodyAsBytes(), Charset.forName( response.charset() ) );此代码导致应用程序崩溃
  • @danielecastronovo “现在我可以推断出此文件中变量的内容了吗?” 抱歉,我不明白您的这部分评论。关于应用程序崩溃,请尝试以下操作:String jsCode = new String( response.bodyAsBytes())
  • 在这个 JavaScript 文件中,有一个我知道名字的变量,比如 foo,但是它的内容开始总是不同的,那么如何提取这个变量的内容呢?例如。 var foo = [ google.com ] 我想动态获取 url google.com
  • @danielecastronovo 请用您发现的变体更新您的问题。
猜你喜欢
  • 2014-09-08
  • 1970-01-01
  • 2016-12-31
  • 2010-09-24
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多