【发布时间】:2017-09-07 17:16:35
【问题描述】:
现在我有一个看起来像这样的函数:
static getPageImg(url) {
return new Promise((resolve, reject) => {
//get our html
axios.get(url)
.then(resp => {
//html
const html = resp.data;
//load into a $
const $ = cheerio.load(html);
//find ourself a img
const src = url + "/" + $("body").find("img")[0].attribs.src;
//make sure there are no extra slashes
resolve(src.replace(/([^:]\/)\/+/g, "$1"));
})
.catch(err => {
reject(err);
});
});
}
这将处理页面使用相对路径链接到图像的平均情况,并且主机名与提供的 URL 相同。
然而, 大多数时候 URL 方案会更复杂,例如 URL 可能是 stackoverflow.com/something/asdasd,而我需要的是获取 stackoverflow.com/someimage 链接。或者更有趣的情况是使用 CDN 并且图像来自单独的服务器。例如,如果我想链接到来自 imgur 的某些内容,请给出如下链接:http://imgur.com/gallery/epqDj。但图片的实际位置是http://i.imgur.com/pK0thAm.jpg 网站的子域。更有趣的是,如果我要获得 src 属性,我将拥有:“//i.imgur.com/pK0thAm.jpg”。
现在我想必须有一种简单的方法来获取此图像,因为浏览器可以非常快速轻松地执行“在新选项卡中打开窗口”所以我想知道是否有人知道除了编写之外的简单方法一个可以处理所有这些情况的大函数。
谢谢!
【问题讨论】:
标签: html node.js url web-crawler cheerio