给定URL使用Node检索该页面上的最大图像

时间:2013-03-26 01:02:26

标签: node.js express

我希望在Angular.js网络应用中构建一个功能,允许用户将网址粘贴到像Amazon或Zappos这样的电子商务网站,并从该网页检索主产品图片。我的计划是将网址发布到我的快速API并处理服务器上的图像检索。

我最初的计划是下载原始html,用htmlparser解析它,用soupselect选择所有html图像元素并检索它们的src属性。理想情况下,我希望实现一个可以在任何站点上运行的解决方案,而不仅仅是对特定零售商站点的硬编码值(使用特定的已知css类名称)。我做的一个假设是页面上最大的图像可能是主要的产品图像,我决定尝试按文件大小对图像进行排序。我的想法是使用src url为每个图像创建一个http头请求,以使用content-length头属性确定它们的大小。到目前为止,这种方法运行良好但我真的希望避免发出这么多的http请求,即使它们只是头部请求。

我觉得有更好的方法可以使用像PhantomJS这样的东西加载整个页面并以这种方式解析它会更容易吗?我试图尽可能快地完成这项工作,从而避免下载所有图像。有没有人有任何建议?

1 个答案:

答案 0 :(得分:1)

我认为使用的最佳图像不是文件大小最大的图像,而是页面上显示最大的图像。 PhantomJS可能能够帮助您确定。加载页面,但指示PhantomJS不加载图像。然后选择计算尺寸最大的图像元素。这仅在页面使用img上的CSS或width和height属性为其提供尺寸时才有效。

或者,您可以将图像URL发送回客户端,让客户端获取图像并找出最大的图像。这限制了服务器必须提出的请求数量,并且如果最大的图像不是最好的,它允许用户快速选择不同的图像。