我想要一个脚本,我可以输入一个URL,它会智能地抓住文章的第一段......我不知道从哪里开始,只需从{{1}内拉文本}标签。你知道有关如何做这类事的任何提示/教程吗?
更新
为了进一步澄清,我正在构建我的网站的一个部分,用户可以在Facebook上提交链接,它将从他们的网站上获取图像以及文本以获取链接。我正在使用PHP并尝试确定最佳方法。
我说“聪明地”,因为我想尝试在该页面上获取重要的内容,不仅仅是第一段,而是最重要内容的第一段。
答案 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。