Как извлечь первые несколько предложений из текста на веб-странице - PullRequest
0 голосов
/ 24 августа 2011

Мы создаем какой-то сайт digg и хотим автоматически получать ограниченный текст (2-3 предложения).Это могут быть последние 3 предложения article.if, что будет проще.В данный момент мы без проблем извлекаем содержимое веб-страницы, но хотим сделать универсальный скрипт, чтобы получить несколько предложений.Мы хотим избежать создания пользовательских сценариев для каждого веб-сайта, с которого мы хотим получать контент.

Я думал найти текстовый блок по точкам.Чтобы найти точки на близком расстоянии, а затем найти слова вокруг точек.Это грубая идея.Есть ли у кого-то еще идеи, как извлечь только часть текста.

Мы не хотим просматривать весь контент.

Спасибо.

1 Ответ

1 голос
/ 25 августа 2011

Вы можете искать большие части документа, которые имеют меньшую разметку и меньше вертикальных пробелов. Загрузите исходный код страницы и удалите любую разметку, используя strip_tags(). Затем вы можете искать, скажем, пять последовательных предложений, используя регулярные выражения.

Вот пример сценария. Он использует класс, который не включен (абстракция функций curl_multi), но этот класс на самом деле не имеет отношения к вашему вопросу.

<?php

require_once("./../MultipleRequester.php");

$requester = new MultipleRequester();

$requester->addGetRequest( 'test', 'http://www.businessweek.com/news/2011-08-24/gold-tumbles-most-since-march-2008-as-demand-for-haven-wanes.html');
$requester->execute();
$content = $requester->getContent('test');

$plainText = strip_tags( $content );

$search = preg_match('/(\h{0,2}\v{0,2}\h{0,2}[A-Z]{1}[A-z0-9 ,\'")(.$]{10,1000}\.){2,5}/', $plainText, $matches);

if( $search )
    print trim($matches[0]);
else
    print "Could not extract anything.";

print "\n\n";
?>

Это печатает:

Доллар вырос против корзины из шести основных валют на фоне спекуляций о том, скажет ли на этой неделе председатель Федеральной резервной системы Бен С. Бернанке, что центральный банк готов предоставить больше стимулов для экономики. На этой неделе центральные банкиры встречаются в Джексон-Хоуле, штат Вайоминг, чтобы обсудить восстановление в США.

У вас все еще могут быть проблемы с сайтами, которые много размечают свой контент. Возможно, вы захотите сделать регулярное выражение более мягким, особенно в отношении пробелов.

Регулярное выражение немного запутанно, но вы можете настроить его или написать свое собственное.

...