为js&提取网址来自html的css文件? (使用node.js)

时间:2015-03-15 06:26:24

标签: html node.js html5-appcache

我想要一个来自html字符串的url数组,尽管只有以下标记:

  • link href =" http://example.com/foo.css"
  • script src =" http://example.com/foo.js"

我想要这些网址,以便我可以将它们放入appcache清单文件中。我使用appcache清单构建器,但它只分析我在本地服务的静态文件。它工作得很好,但它不会自动包含我在html中包含的外部静态js / css文件。

我希望能够使用node.js解析html字符串。

1 个答案:

答案 0 :(得分:4)

您可以使用cheerio。它是节点核心jQuery的实现。

例如:

var cheerio = require('cheerio'),
    request = require('request');

request('http://www.stackoverflow.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    var $ = cheerio.load(body);

    var linkHrefs = $('link').map(function(i) {
      return $(this).attr('href');
    }).get();
    var scriptSrcs = $('script').map(function(i) {
      return $(this).attr('src');
    }).get();


    console.log("links:");
    console.log(linkHrefs);
    console.log("scripts:");
    console.log(scriptSrcs);
  }
});

输出:

Victors-MacBook-Pro:a kohl$ node test.js 
links:
[ '//cdn.sstatic.net/stackoverflow/img/favicon.ico?v=6cd6089ee7f6',
  '//cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png?v=41f6e13ade69',
  '/opensearch.xml',
  '//cdn.sstatic.net/stackoverflow/all.css?v=317033db9646',
  '/feeds' ]
scripts:
[ '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
  '//cdn.sstatic.net/Js/stub.en.js?v=e3a448574e16' ]