2

我希望在 Angular.js 网络应用程序中构建一个功能,允许用户将 URL 粘贴到亚马逊或 Zappos 等电子商务网站,并从该页面检索主要产品图像。我的计划是将 url 发布到我的 express API 并在服务器上处理图像检索。

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

我觉得有更好的方法可以做到这一点,使用 PhantomJS 之类的东西来加载整个页面并以这种方式解析会更容易吗?我试图尽快完成这项工作,从而避免下载所有图像。有没有人有什么建议?

4

1 回答 1

1

我认为最好使用的图像不是文件大小最大的图像,而是页面上显示最大的图像。PhantomJS 或许可以帮助您确定这一点。加载页面,但指示 PhantomJS 不加载图像。然后选择计算尺寸最大的图像元素。这只有在页面使用 CSS 或 img 上的宽度和高度属性来赋予它尺寸时才有效。

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

于 2013-03-26T01:11:18.480 回答