智能地抓住第一段/开始文本

时间:2011-01-11 15:09:08

标签: php regex data-mining

我想要一个脚本,我可以输入一个URL,它会智能地抓住文章的第一段......我不知道从哪里开始,只需从{{1}内拉文本}标签。你知道有关如何做这类事的任何提示/教程吗?

更新

为了进一步澄清,我正在构建我的网站的一个部分,用户可以在Facebook上提交链接,它将从他们的网站上获取图像以及文本以获取链接。我正在使用PHP并尝试确定最佳方法。

我说“聪明地”,因为我想尝试在该页面上获取重要的内容,不仅仅是第一段,而是最重要内容的第一段。

3 个答案:

答案 0 :(得分:2)

如果您要抓取的页面是外来的,或者即使它是本地的,但您事先并不知道它的结构,我会说最好的方法是使用php DOM functions

function get_first_paragraph($url)
{
  $page = file_get_contents($url);
  $doc = new DOMDocument();
  $doc->loadHTML($page);
  /* Gets all the paragraphs */
  $p = $doc->getElementsByTagName('p');
  /* extracts the first one */
  $p = $p->items(0);
  /* returns the paragraph's content */
  return $p->textContent;
}

答案 1 :(得分:1)

简短回答:你不能。

为了让PHP脚本“智能地”从页面中获取“最重要”的内容,脚本必须理解页面上的内容。 PHP不是自然语言处理器,也不是一个微不足道的研究领域。可能有一些用于PHP的NLP工具包,但我仍然怀疑它会很容易。

可以通过合理的努力实现的解决方案是使用HTML解析器获取整个页面,然后查找具有某些类名称或在博客引擎中常见的ID的元素。您也可以解析hAtom微格式。或者您可以查看文档中的Meta标记以及更明确定义的信息。

答案 2 :(得分:1)

前段时间我写了Python script来提取网页的主要文章内容。它使用启发式扫描文档中的所有文本节点,并将类似深度的节点组合在一起,然后假设最大的分组是主要文章。

当然,这种方法有其局限性,没有任何方法可以在100%的网页上使用。这只是一种方法,还有许多其他方法可以实现它。您可能还希望在此主题上查看类似的past questions