2

ユーザーがAmazonやZapposなどのeコマースサイトにURLを貼り付けて、そのページからメインの製品画像を取得できるようにする機能をAngular.jsWebアプリに組み込むことを検討しています。私の計画は、URLをExpress APIに投稿し、サーバーで画像検索を処理することです。

私の最初の計画は、生のhtmlをダウンロードし、htmlparserで解析し、soupselectですべてのhtml画像要素を選択することでした。src属性を取得します。理想的には、特定の小売業者のサイトの値をハードコードするだけでなく、(特定の既知のcssクラス名を使用して)任意のサイトで機能するソリューションを実装したいと思います。私が行った仮定の1つは、ページ上の最大の画像が主な製品画像である可能性が高いというものでした。このロジックを使用して、画像をファイルサイズで並べ替えることを決定しました。私のアイデアは、各画像のsrcurlを使用してhttpheadリクエストを作成し、content-lengthヘッダープロパティを使用して画像のサイズを決定することでした。これまでのところ、このアプローチはうまく機能していますが、ヘッドリクエストだけであっても、これほど多くのhttpリクエストを行わないようにしたいと思います。

これを行うためのより良い方法があると思います。PhantomJSのようなものを使用してページ全体をロードし、そのように解析する方が簡単でしょうか?私はこの作業をできるだけ速くして、すべての画像をダウンロードしないようにしようとしていました。誰か提案はありますか?

4

1 に答える 1

1

使用するのに最適な画像は、ファイルサイズが最大の画像ではなく、ページ上で最大に表示される画像だと思います。PhantomJSは、それを判断するのに役立つ場合があります。ページをロードしますが、画像をロードしないようにPhantomJSに指示します。次に、計算された寸法が最大の画像要素を選択します。これは、ページがサイズを指定するためにimgでCSSまたは幅と高さの属性を使用している場合にのみ機能します。

または、画像のURLをクライアントに送り返し、クライアントに画像を取得して、どれが最大かを判断させることもできます。これにより、サーバーが実行する必要のあるリクエストの数が制限され、最大のものが最適でない場合でも、ユーザーは別の画像をすばやく選択できます。

于 2013-03-26T01:11:18.480 に答える