Проверка фото из отзывов на AliExpress
На AliExpress пользователи очень часто оставляют отзывы о товарах. Обычно это рассказы о качестве товаров, личные впечатления об использовании и комментарии о сервисах и сроках доставки.
Но самый большой интерес и пользу представляют фото с распаковкой товаров. Девушки охотно демонстрируют фото себя в купленном нижнем белье, а парни выкладывают фото комплектации покупки.
По фотографии можно сразу увидеть качество товара в реальности. Которое в большинстве случаев очень сильно отличается от того что рекламируется.
Но есть одно «Но». Фото в отзывах ужасно маленького размера и нет галереи, где можно прокликать все фото за один раз. Пример того, как выглядят фото в отзывах на AliExpress — bit.ly/2C7myX3
Чтобы исправить ситуацию я решил написать свой парсер фото из товаров и сделать плиточный дизайн в стиле Pinterest.
На момент написания статьи доступны следующие фичи: 1. Парсер фото из отзывов по URL товара.2. Поиск товаров с максимальным рейтингом по ключевому слову.3. Вывод Топ продаваемых товаров на AliExpress за неделю.
Чтобы понять зачем это все нужно, давайте посмотрим на выдачу комментариев на AliExpress и Alipic — bit.ly/2o1e1Tg
Товар на AliExpress — bit.ly/2nI7v3TФото отзывов на Alipic — bit.ly/2j7zoRe
Далее расскажу о технической реализации парсера фото на php.
Страница продукта состоит из двух блоков — bit.ly/2yqVujg1. Информация о товаре (цена, название, рейтинг, скидка, ссылка на магазин). Реализовано через API AliExpress.
2. Фото отзывов. Реализовано с помощью прямого парсинга с помощью CURL + SimpleDom.
Для получения API нужно зарегистрировать на AliExpress Developer. Проверка акаунта заняла 5 дней.
Парсим фото из отзывов по URL товара.
В API AliExpress нет доступа к фото из отзывов. Потому смотрим откуда Али вытягивает комментарии:
Открываем страницу любого продукта (в примере — bit.ly/2j7zoRe), запускаем девелоперскую консоль и ищем блок с комментарием — bit.ly/2jSjrLW
Как видим, Али подгружает комментарии в <iframe> . Это очень хорошо, так как не нужно будет грузить полностью всю страницу.
Параметры которые важны:productId — уникальный айдишник каждого товара.withPictures — включить, выключить комментарии с фото. Значения true,false.
Урлы товара бывают разного формата. Для получения productId из урла используем regexp:
После получения productId готовим ссылки для парсинга:
Далее нам нужно параллельно загружать API запрос и парсить страницу с комментариями.Функция параллельного парсинга:
Получение контента страниц в массив:
Теперь парсим информацию о товаре, которую получили в json формате:
Для парсинга страницы комментариев используем SimpleDom библиотеку и обращаемся к DOM элементам страницы:
Для отрисовки фото в стиле Pinterest использовалась библиотека Mansory.JSИсходный код парсера на github — github.com/. ter/ali_exp_img_parse.php
В избранное В избранном 0
27 комментариевПривет. Все супер, но так и не нашел где он этот AliExpress Developer что бы API попросить)))
Ну все давно юзают мобильное приложение Али, там все чётенько с этим, хотя и без галереи не вижу проблем- размер фото достаточен, особо интересную можно и в отдельной вкладке открыть, делов то.
Совсем неприкрытый маркетинговый ход со знанием специфики аудитории :)
Ну классика жанра к такой хрени прикручивать экстеншен браузера. Ибо не станет юзер ходить на какой-то сайт и вбивать ссылки, у него лапки.
PS. Ещё бы нейросеть, которая по тексту и картинке догадывалась что оно такое на самом деле.
Код набагато краще виглядав би на гітхабі а тут тільки ссилки, бо так доволі незручно читати.
Прикольно конечно. Этакий программерский подход:) Гуманитарий нажмёт правую кнопку мышки и выберет «показать изображение»
Молодец. Но:— где свойства?— где шаблоны? — где partial-классы?— где расширения методов класса?— где скрытая имплементация интерфейсов?— где перегрузка параметров функций?— где нормальное потребление памяти приложением?— где быстрая работа приложения?— где нормальные иде, с полноценными дизайнерами?— где пользовательские value types?— где методы у инстансов value types?— где var и анонимные типы— где перегрузка операторов?
И вообще какого хрена.
можно короче: кг/ам
А зачем это все вменяемым и свободным разработчикам собственных продуктов? Фреймворки придуманы, чтобы из заказчиков деньги доить. Как и OOP с OOD. IT давным-давно уже пытается усложнить и переусложнить себя самое. Но главное ведь не лизнуть авторитетам, а написать код, решающий поставленную задачу. Не код, который будет решать целый комплекс возможных осложнений при решении возможных вариаций поставленной задачи так как такой г*код нужен отнюдь не разработчику, а заказчику, оптимизирующему рабочее время разработчика в свою пользу. Все, что не относится к решению текущей задачи выбрасывайте из кода нахрен ибо эти штуки вредны и опасны — стремительно приближают дедлайны. Завтра будет новый день и новый код — говорите себе. И даже, в идеале, лучше копипастить, чем рефакторить. Не бывает двух одинаковых бонсай. Даже в самом начале это два разных зерна или веточки. Так что или вы разбираетесь в программировании или вы используете дизайн паттернс.
Ну не совсем. Например в коде выше вместо голого курла можно газзл заюзать — уже читать приятнее бы было.
и ни одного паттерна проектирования
і не кажіть, куме
— где костыли?— где руль и педали?— собаки пятая нога — где?
На PHP можно писать довольно быстрый код. Конечно, не такой резкий, как заточенный под конкретную задачу инстанс nodejs. Можно банально придерживаться паттерна mvc и не погрязнуть в паутине спагетти-скриптов с сотнями инклюдов. Код будет хотя бы структурирован и изолирован от мусора. Это идеальное состояние, если большую часть рабочего времени вы добавляете в общую свалку новые, независимые друг от друга конвертики с тухлятиной.Можно написать классы объектов, там где они необходимы и наполнить их методами. Опять же, всё ради структурирования кода, для вполне сносной и быстрой навигации по разрастающейся выгребной яме проекта.Можно навесить плюшки в виде аякса, где это уместно, и местами перенести генерацию контента вовсе на клиент, вместе с тем сэкономив десятки тяжёлых запросов на отрисовку страницы целиком.Можно придти к мысли, что mysql с её слоупочными table locks и transactional safety и с её возможностью масштабирования только при помощи анальных расширителей не очень-то, собственно, и нужна в большинстве задач. Только это всё не нужно. Ваш сайт, в общем, далеко все не идеально. Но и не все так мрачно, как описано: сайт развивается, у него есть пусть небольшое, но стабильное коммьюнити и, главное, есть пользователи, которые будут зависеть от этого сайта, поэтому сильно заинтересованы в его улучшении, а с недавних пор могущие в этом улучшении участвовать.