Какова лучшая практика для извлечения статей / постов на внешних сайтах - PullRequest
0 голосов
/ 13 февраля 2012

Я разработал систему, которая сканирует 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.
}

Любые предложения или комментарии очень ценятся!Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...