2013-03-26 1 views
2

과 함께 해당 페이지에서 가장 큰 이미지를 검색합니다. 사용자가 Amazon 또는 Zappos와 같은 전자 상거래 사이트에 URL을 붙여 넣을 수있는 기능을 Angular.js 웹 앱에 빌드하고 기본 해당 페이지의 제품 이미지. 제 계획은 명시 적 API에 URL을 게시하고 서버에서 이미지 검색을 처리하는 것입니다.URL이 노드

내 초기 계획은 원시 HTML을 다운로드하고 htmlparser으로 구문 분석하고 soupselect과 함께 모든 HTML 이미지 요소를 선택하고 src 속성을 검색하는 것이 었습니다. 이상 적으로 특정 소매 업체 사이트의 하드 코드 값 (특정 CSS 클래스 이름 사용)이 아닌 모든 사이트에서 작동 할 수있는 솔루션을 구현하고 싶습니다. 제가 만든 가정 중 하나는 페이지의 가장 큰 이미지가 주요 제품 이미지 일 것입니다.이 논리로 파일 크기별로 이미지를 정렬하려고 결정했습니다. 내 생각은 Content-Length 헤더 속성으로 크기를 결정하기 위해 각각의 이미지에 대한 src URL로 http 머리 요청을하는 것이었다. 지금까지이 접근 방식은 잘 작동했지만 머리 요청 만하는 경우에도 너무 많은 http 요청을하지 않는 것이 좋습니다.

나는 더 좋은 방법이 있다고 느낍니다. PhantomJS와 같은 것을 사용하여 전체 페이지를로드하고 구문 분석하는 것이 더 쉬울까요? 가능한 빨리이 작업을하고 모든 이미지를 다운로드하지 않으려 고 노력했습니다. 누구든지 어떤 제안이 있습니까?

답변

1

가장 좋은 파일 크기를 가진 이미지가 아니라 가장 큰 이미지가 페이지에서 가장 많이 표시되는 이미지라고 생각합니다. PhantomJS가 그 결정을 도울 수 있습니다. 페이지를 불러 오지만 PhantomJS가 이미지를로드하지 않도록하십시오. 그런 다음 계산 된 크기가 가장 큰 이미지 요소를 선택합니다. 이 기능은 페이지에서 크기를 지정하기 위해 img에서 CSS 또는 너비 및 높이 특성을 사용하는 경우에만 작동합니다.

또는 이미지 URL을 다시 클라이언트로 보내고 클라이언트가 이미지를 가져 와서 가장 큰 이미지를 찾아 낼 수도 있습니다. 이는 서버가해야하는 요청의 수를 제한하며, 가장 큰 것이 최선이 아닌 경우 다른 이미지를 빠르게 선택할 수 있습니다.

+0

감사합니다. 다음은 몇 가지 좋은 대안입니다. 나는 클라이언트가 요청을하는 것에 대해 정말로 생각해 본 적이없는 것 같다. 잠재적으로 나는 또한 iframe을 열고 사용자가 이미지를 선택할 수있게 할 수 있습니다. 나는 당신이 링크를 공유 할 때 페이스 북이 비슷한 것을 어떻게하는지 알아 내려고했다. 메타 속성 = "og : image"와 같은 메타 데이터를 찾은 것처럼 보인다. – TyndieRock

+0

og : image는 웹 사이트가 다른 사람들에게 선언 할 수있게 해주는 오픈 그래프 프로토콜이다. 페이스 북과 같은 웹 사이트는 페이지상의 어떤 물체를 의미합니다. 이는 소프트웨어가 페이지 내용을 이해할 수있게 해주는 표준화 된 html 구조의 모음 인 microformats와 유사한 개념입니다. Google "microformat"및 "opengraph". 분명히 우리가 Facebook이 아니기 때문에 우리는 다른 개발자에게 우리에게 사용자 정의 형식을 포함시키는 데 영향을 줄 수 없습니다. 그러나 우리는 Facebook의 영향력을 활용하여 opengraph를 사용할 수 있습니다. – slebetman