То, что я собираюсь делать, по сути то же самое, что и кнопка Tweet или кнопка Facebook Share / Like, а именно очистка страницы и наиболее подходящего заголовка для фрагмента данных. Лучший пример, который я могу придумать, - это когда вы находитесь на главной странице веб-сайта с множеством статей и нажимаете кнопку «Нравится» в Facebook. Затем он получит правильную информацию для сообщения относительно (ближайшей) кнопки «Нравится». На некоторых сайтах есть теги Open Graph, а на некоторых их нет, и он по-прежнему работает.
Поскольку это делается удаленно, у меня есть контроль только над теми данными, на которые я хочу ориентироваться. В этом случае данные представляют собой изображения. Вместо того, чтобы извлекать только <title>
страницы, я пытаюсь каким-то образом обойти dom в обратном направлении от начальной точки каждого изображения и найти ближайший «заголовок». Проблема в том, что не все заголовки располагаются перед изображением. Однако вероятность появления изображения после заголовка в этом случае кажется довольно высокой. С учетом сказанного, я надеюсь, что он будет работать практически на любом сайте.
Мысли:
- Найдите «контейнер» изображения, а затем используйте первый блок текста.
- Найдите блоки текста в элементах, которые содержат определенные классы («описание», «заголовок») или элементы (h1, h2, h3, h4).
Резервные копии заголовков:
- Использование тегов Open Graph
- Используя только
<title>
- Использование только тегов ALT
- Использование мета-тегов
Резюме: проблема не в извлечении изображений, а в том, как получить для них соответствующие заголовки.
Вопрос: Как бы вы подобрали подходящие названия для каждого изображения? Возможно, с помощью DomDocument или XPath?