我看过this question,但它并不能真正满足我的需求。这个问题的答案是:从meta description标签中删除,第二个问题是为您已经有正文的文章摘录。

我想要做的实际上是获得文章的前几句话,就像可读性一样。最好的方法是什么? HTML解析?这是我当前正在使用的,但这不是很可靠。

function guessExcerpt($url) {
    $html = file_get_contents_curl($url);

    $doc = new DOMDocument();
    @$doc->loadHTML($html);

    $metas = $doc->getElementsByTagName('meta');

    for ($i = 0; $i < $metas->length; $i++)
    {
        $meta = $metas->item($i);
        if($meta->getAttribute('name') == 'description')
            $description = $meta->getAttribute('content');

    }

    return $description;
}

function file_get_contents_curl($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}

最佳答案

这是PHP中的可读性端口:https://github.com/feelinglucky/php-readability。去尝试一下。提取结果将类似于可读性(因为它实现了可读性算法)。

require 'lib/Readability.inc.php';

$html = file_get_contents_curl($url);

$Readability     = new Readability($html, $html_input_charset); // default charset is utf-8
$ReadabilityData = $Readability->getContent();

$title   = $ReadabilityData['title'];
$content = $ReadabilityData['content'];

然后,您可以使用$content中的一些句子作为摘录。

关于php - PHP Scrape文章摘录,如可读性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11725460/

10-12 17:17