从html数据中获取并替换img src值

时间:2016-09-07 07:28:28

标签: javascript node.js amazon-web-services amazon-s3

我有html文件,它存储在AWS S3中。我已经阅读了带有NodeJS AWS-SDK功能(getObject)的html内容文件,它运行得非常好,然后给我一个数据。问题是,如何获得" src"来自那个HTML数据的网址?以及如何用新网址替换它?

这是我的示例代码,我在cmd windows中运行它:

var AWS = require('aws-sdk');

AWS.config.loadFromPath('./config.json');
var s3 = new AWS.S3();
var params = {Bucket: 'myStoreName/content', Key: 'index.html'};

s3.getObject(params, function(err, data) {
  if (err) {
    console.log(err, err.stack);
  }
  else {
    var html = data.Body.toString();
    console.log(html);
  }    
});

上述代码的结果是:

<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World</h1>
        <p>This is sample of test</p>
        <img src="./myimage.jpg" />
    </body>
</html>

我只想将src url重新命名为src =&#34; cid:unique@kreata.ee"。有谁知道如何解决它?还有其他方法吗?谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

您可能希望为此使用一些解析器。

Cheerio是我的选择。

var AWS = require('aws-sdk');
var cheerio = require('cheerio');

AWS.config.loadFromPath('./config.json');
var s3 = new AWS.S3();
var params = {Bucket: 'myStoreName/content', Key: 'index.html'};

s3.getObject(params, function(err, data) {
  if (err) {
    console.log(err, err.stack);
  }
  else {
    var $ = cheerio.load( data.Body.toString() );
    $('body').find('img').attr('src', 'SRC_VALUE_TO_SET');
        console.log( $.html() );
  }    
});

希望有所帮助。