给定一个URL检索该页面上最大的图像与节点

我正在build立一个function到一个Angular.js的networking应用程序,允许用户将url粘贴到电子商务网站,如亚马逊或Zappos,并从该页面检索主要产品图像。 我的计划是将url发布到我的express API并处理服务器上的图像检索。

我最初的计划是下载原始的html,用htmlparserparsing出来,用soupseselect所有的html图像元素并检索它们的src属性。 理想情况下,我希望实施一种可以在任何网站上工作的解决scheme,而不仅仅是针对特定零售商网站的硬编码值(使用特定的已知css类名称)。 我做的一个假设是,页面上最大的图像可能是主要的产品形象,这个逻辑我决定我会尝试按照文件大小sorting图像。 我的想法是用每个图像的src url做一个http头部请求,通过content-length头部属性确定它们的大小。 到目前为止,这种方法运行良好,但我真的希望避免做出如此多的http请求,即使它们只是头部请求。

我觉得有一个更好的方法来做这件事,使用像PhantomJS这样的东西来加载整个页面并parsing它会更容易吗? 我试图尽可能快地完成这项工作,从而避免下载所有的图像。 有没有人有什么build议?

我认为最好的图像使用不是最大的文件大小,但在页面上显示最大的图像。 PhantomJS可能可以帮助您确定。 加载页面,但指示PhantomJS不加载图像。 然后select计算尺寸最大的图像元素。 这只会在页面使用img上的CSS或宽度和高度属性给它维度时才起作用。

或者,您可以将图像URL发送回客户端,并让客户端获取图像并确定哪些是最大的。 这限制了您的服务器的请求数量,并且如果最大的不是最好的,它允许用户快速地select不同的图像。