Как лучше сделать универсальный парсер?

в 13:29, , рубрики: php, Песочница, метки: ,

Возникла нужда сделать универсальный парсер.

Задача

Имеется n сайтов (интренет магазинов), таких как ebay, buy. Нужно получить данные такого вида:

  • Title / Название продукта
  • Picture / Изображение продукта
  • Price / Цена

Всё должно в примерннотаком порядке:

  1. Подаём ссылку, например: www.buy.com/prod/mxl-condenser-microphone-and-pop-filter-bundle-mxl-2008-pf001/224516871.html
  2. В ответ получаем наши данные, тайтл, картинку, и цену. С возможностью редактирования
  3. Постим данные в наш сайт

Проблема

Данные должны также успешно парсится с любого интрнет магазина, при этом 100% результат должен получаться не меньше чем в 6 случаях из 10.

Варианты решения задачи

  • PHP parser по шаблону
  • JS parser с поиком слоёв рядом находящихся
  • Что-то другое

PHP parser по шаблону

Первое что пришло в голов, настроить PHP parser по шаблонам. Для этого решил испробовать библиотеку "PHP Simple HTML DOM Parser", поскольку делать шаблоны на регулярных выражениях могло привести не изведанным резуьтатам, плюс библиотека действительно удобная.
Для этого первым дело нужно было найти сам контэйнер в котором содержиться и цена и название и картинка.
С ebay прошло удачно, но дальше, пошло уже на перекасяк.
Начало искалось по title, но у следуещего сайт title был выведен за границы основного контэйнера (ох уж эти верстальщики).
В прочем идея начал сама по себе отпадать, слишком много шаблонов готовить нужно, т.к. на данный момент имеющаяся база интерент магазинов привышает 500, к тому же не хотелось бы получить жалобу от клиента, типо "я вставил линк, а в ответ получил какойто бред". (но от идеи еще не отказался потому что слишком мало других вариантов)

JS parser

Пока только идея, алгоритм должен происходить в след порядке.

  1. Ищем тайтл
  2. В радиусе, скажем 300px находим картинки и всё что свзяно с ценой (т.е. имеет в начали символ "$" и оканчивается на ".[0-9]")
  3. Отбираем по критериям адыкватные данные.
  4. Получаем эти данные под редактирование.

Сделать это в фоновом режиме можно только при помощи ajax, но получим очен долгий отклик браузера, хром и ИЕ возможно даже предложит убить окно.
Да и посоветовавшись с колегой мне сказали что это ТУПО.

Итог

В итоге ничего нету.
Хотелось бы услашать дельные советы по этой проблеме.
Есть ли другое решение или стоит продолжать по первому варианту.
Может кто-то разробатывал что-то подобное, умный поиск по странице или поиск адыкватных данных.

Автор: erik91

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js