如何从网页上的文本正文中提取前几句话

时间:2011-08-24 19:21:32

标签: text scrape web

我们正在构建某种digg网站,并希望自动获取有限的文本(2-3个句子)。它可以是article.if的最后3个句子,这将更容易。在momemt我们获取网页内容没有问题,但想要通用脚本来获得几句话。我们希望避免为我们想要获取内容的每个网站制作自定义脚本。

我正在考虑通过点找到文本块。要在近距离内找到点,而不是在点周围找到单词。这是个好主意。有人还有其他想法如何提取文本的标准。

我们不想抓取全部内容。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以查找文档的大部分标记较少且垂直空白较少的文档。下载页面的源代码并使用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";
?>

打印:

  由于市场猜测美联储主席本·伯南克本周是否会表示中央银行愿意为经济提供更多刺激措施,美元兑一篮子六种主要货币上涨。本周央行行长会见了怀俄明州杰克逊霍尔,以解决美国的复苏问题。

对于标记其内容的网站,您可能仍会遇到问题。您可能希望使正则表达式更宽松,特别是对于空格。

正则表达式有点混乱,但你可以调整它或编写自己的。