Я разработал систему, которая сканирует html-контент на внешних веб-сайтах для анализа.На стороне сервера / сервера я использую DOMDocument / DOMLoad для загрузки содержимого и XPath для фильтрации нужных мне тегов (например, h1- / h2- / h3-Tags, body, a и т. Д.).
В целом, я бы сказал, что он в основном делает то, что делает Google Adsense или другие инструменты анализа: сканирование контента -> сбор данных из базы данных и ... -> отправка эквивалентного контента (например, рекламы) обратно на сайт.
Это все прекрасно работает.
Теперь вот проблема, с которой я сталкиваюсь:
Большинство сайтов, которые я сканирую, являютсяблоги.Следовательно, контент, который мне нужно проанализировать, это не просто одна страница, он должен быть в состоянии искать на основе статей, например, если у вас есть 10 или более статей с кучей разных тем на одной странице.Прямо сейчас мой сканер сканирует только целую веб-страницу и выполняет поиск по ключевым словам в содержании.
Теперь мне интересно: есть ли лучшая практика для фильтрации контейнеров статей на веб-сайте?Я знаю, что это было сделано раньше, и это действительно основано на системе (например, Wordpress, Joomla, drupal и т. Д.).Однако нет никакой гарантии, что определенные имена классов или словари могут быть использованы для категоризации (то есть class = 'post' для wordpress или высказывание, что "", скорее всего, может быть концом статьи).В HTML5 есть тег статьи или сканирование на основе RSS (что не является моим предпочтительным способом).
Мне кажется, что-то вроде этого:
<html>
<body>
---- article1
text about article1
---- article 2
text about article2
---- article 3
text about article3
</body>
</html>
- стиль псевдокода:
while($content['body']) { // crawling
if(html5) -> $articles = get content for <article> tags
elseif(found(rss)) -> crawl on a base of rss, not prefered
elseif(found "class=post") -> $articles = get content for this container
elseif(found "class=article") -> $articles = get content for this container
elseif(found "</div></div></div>") -> article end -> $articles = get content for the container above...
//etc.
}
Любые предложения или комментарии очень ценятся!Спасибо.