我们正在构建某种 digg 站点,并希望自动获取有限的文本(2-3 个句子)。它可以是文章的最后 3 句。如果这样会更容易。在moemt,我们毫无问题地获取网页内容,但想制作通用脚本以获取少量句子。我们希望避免为要从中获取内容的每个网站制作自定义脚本。
我在想逐点查找文本块。在近距离内找到点,而不是在点周围找到单词。那是原始的想法。是否有人有其他想法如何仅提取文本的一部分。
我们不想抓取全部内容。
谢谢你。
您可以查找具有较少标记和较少垂直空白的文档的大部分。下载页面的源代码并使用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";
?>
这打印:
美元兑一篮子六种主要货币上涨,因市场猜测美联储主席伯南克本周是否会表示央行愿意为经济提供更多刺激。央行行长本周在怀俄明州杰克逊霍尔召开会议,讨论美国经济复苏问题。
您可能仍然无法使用大量标记其内容的网站。您可能希望使正则表达式更宽松,尤其是对空格。
正则表达式有点乱,但您可以调整它或编写自己的。