Парсинг фото/картинок с сайтов часто больная тема у многих, особенно начинающих. Если у Вас с помощью xpath или регулярного изображения не получается получить большое изображение, то попробуйте воспользоваться этим советом. Особенно он будет полезен, если для товара есть несколько фотографий.
Покажу вам проверенный способ, которым часто пользуюсь. Часто полученная картинка:
1) скачивается и маленькая и большая картинка
2) оказывается маленькой
Для первого случая в 99% достаточно просто сделать допустимым только тег <a>, т.к идет вложенность
<a href="picture_big.jpg"> <img src="picture_small.jpg"> </a>
И естественно Датакол качает 2 картинки. Чтобы ограничить включаем "Допустимые теги" = <a>
Для второго случая нужно найти так сказать 1 отличие в ссылке на маленькое изображение и большое. В основном это может быть:
- приставка к имени файла, например thumb, small и т.п
- добавление размера, например 60x60
- или совмещенные способы /thumb/picture_60x60.jpg
Рассмотрим на примере http://demo-ru.webasyst.net/shop/product/iphone/
Откроем станицу в Selector и кликнем левой кнопкой мыши (ЛКМ) по картинке. Селектор выделит ссылку на картинку в теге <img>.
Мы видим конструкцию, которую я описал выше, тег <img> вложен в тег <a>:
<a target="_blank" onclick="return hs.expand(this)" href='products_pictures/iphone13z_enl.jpg' img_width="403" img_height="630"> <img id='img-current_picture' border='0' src="products_pictures/iphone13z.jpg" title="iPhone ― Мой интернет-магазин" alt="iPhone ― Мой интернет-магазин" > </a>
И видим что ссылки отличаются приставкой _enl для большого фото. Значит нам остается добавить 1 замену
.jpg на _enl.jpg
Если картинок, которые нужно спарсить несколько, как на странице примере, то можно подобрать xpath для списка картинок.
Откроем Picker, нажимаем ПКМ на картинке из списка и "подобрать xpath"
Наш xpath будет таким:
//table[@id='box_product_thumbnails']/tbody/tr/td/a[@class=' ']/img
Но огорчу Вас, он не работает ) Да, так бывает. Но раз уж взял в пример эту страницу, значит доведу до конца.
Теперь один секрет ) Если загрузчик Браузер то в его DOM модели есть тег <tbody>, если стандартный загрузчик то его нет, поэтому будьте внимательны, если вам попадаются таблицы и используете стандартный загрузчик - то удаляйте его из xpath.
Итак, чтобы получить все картинки, да еще и большие в данном случае можно несколькими способами.
1. Мы видим, что у нас большая картинка в теге <a> значит преобразуем xpath к такому виду
//table[@id='box_product_thumbnails']/tr/td/a
И делаем "Допустимые теги" = <a>
Поле "Статическое" и включаем загрузку файлов.
2. Бывает, что в теге <a> не ссылки на большое изображение (или вовсе его нет), но мы уже заранее узнали, чем отличается ссылка на большое изображение. Тогда используем xpath
//table[@id='box_product_thumbnails']/tr/td/a/img
Добавляем одну замену
.jpg на _enl.jpg
Поле "Статическое" и включаем загрузку файлов.
P.S из стандартного xpath, подобранного в Selector я убрал [@class=' '], т.к его в коде нет, да и логично понятно, что это не нужная конструкция.
Как результат видим, что все загрузилось.