Как извлечь самое большое изображение (по размеру) на сайте, учитывая URL? - PullRequest
6 голосов
/ 16 сентября 2010

Например, если я введу: http://www.google.com/

Будет возвращено: http://www.google.com/images/logos/ps_logo2.png

Использование javascript / jquery. Все эти сайты будут внешними. Спасибо!

Ответы [ 3 ]

5 голосов
/ 16 сентября 2010

Это более сложный веб-анализ, чем JavaScript / jQuery.

Однако, если предположить, что вы получили HTML-код и что он каким-то образом доступен в строке JavaScript, то что-то вроде следующегоДостаточно найти изображение максимального размера:

var sHTML = getHTMLSomehow(sURL);
var nMaxDim = 0;
var $pageDOM = $(sHTML);
var $objMaxDimImage;

$pageDOM.("img").each(function(){
    var $this = $(this);
    var nDim = parseFloat($this.width()) * parseFloat($(this).height());
    if (nDim > nMaxDim){
        $objMaxDimImage = $this;
        nMaxDim = nDim
    }
});

alert("Max dim is:" nMaxDim);
alert("Image Source:" $objMaxDimImage.attr("src"));
5 голосов
/ 23 сентября 2010

Поскольку это расширение Google Chrome, вы не обязаны придерживаться той же политики происхождения.

Как правило, вам потребуется сценарии содержимого , чтобы извлечь все изображения на странице и проверить размер каждого изображения в DOM, чтобы узнать, больше ли оно последнего загруженного изображения.

Вы можете использовать Передача сообщений для связи из скрипта содержимого со страницей всплывающих окон / фона.

Например, я покажу вам, как получить самое большое изображение со страницы ипоказать это во всплывающем окне.Мы используем все методы, показанные выше, и вы увидите самое большое изображение во всплывающем окне, если активируете его.(должно показать, что я верю :)*

function getMaxImage() {
  var maxDimension = 0;
  var maxImage = null;

  // Iterate through all the images.
  var imgElements = document.getElementsByTagName('img');
  for (var index in imgElements) {
    var img = imgElements[index];
    var currDimension = img.width * img.height;
    if (currDimension  > maxDimension){
       maxDimension = currDimension
       maxImage = img;
    }
  }
  // Check if an image has been found.
  if (maxImage) 
    return maxImage.src;
  else
    return null;
}

// Listen for extension requests.
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  if (request.method == "getImage") {
    sendResponse({data: getMaxImage()});
  } else {
    sendResponse({}); // snub them.
  }
});
2 голосов
/ 16 сентября 2010

из-за той же политики происхождения вы не можете получить доступ к внешнему сайту с помощью JavaScript. возможно, вы можете написать серверный скрипт, который загружает страницу (например, с помощью wget), искать img-теги в HTML-коде и загружать все найденные изображения, чтобы проверить размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...