从节点,我想从外部网页获取所有图像网址(src来自img标签的属性).
我开始考虑phantonjs,但不喜欢它没有真正集成到节点(即它在外部进程中运行).
接下来,我尝试使用请求模块和cheerio.这很好用,除了我必须处理相对图像网址.例如
<img src='http//example.com/i.jpg'>
<img src='/i.jpg'>
<img src='i.jpg'>
<img src='../images/i.jpg'>
Run Code Online (Sandbox Code Playgroud)
我可以解决这个问题,但我想知道是否有更简单的方法?
我最终使用了request节点模块cheerio和url.这是我最终做的事情(请注意,这是mvp代码,而不是生产质量):
app.get('/scrape-images', function(req, res) {
request(req.query.url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
var reqUrl = url.parse(req.query.url);
res.send($('img').map(function(i, e) {
var srcUrl = url.parse($(e).attr('src'));
if (!srcUrl.host) {
return url.resolve(reqUrl, srcUrl);
} else {
return url.format(srcUrl);
}
}));
}
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2758 次 |
| 最近记录: |