php – 一种可靠的方式来刮取标题,描述和关键字

目前我正在使用CURL来搜索网站.我想要可靠地获得标题,描述和关键字.

//Parse for the title, description and keywords
if (strlen($link_html) > 0)
{
    $tags = get_meta_tags($link);     // name
    $link_keywords = $tags['keywords'];     // php documentation
    $link_description = $tags['description'];
}

唯一的问题是人们现在正在使用各种元标记,例如开放图形< meta property =“og:title”content =“The Rock”/>.它们也会大量改变标签< title> <标题> < TITLE> <标题取代.要可靠地获得这些是非常困难的.

我真的需要一些能够一致地提取这些变量的代码.如果有一些标题,关键字和描述,只要它能找到它.因为现在它似乎很受欢迎.

也许是一种将所有标题提取到标题数组中的方法?然后,抓取Web开发人员可以选择最佳记录在他们的数据库中.同样适用于关键字和描述.

This is not a duplicate. I have searched through stackoverflow and
nowhere is this solution to place all “title”, “keywords” and
“description” type tags into arrays.

最佳答案 通常,get_meta_tags()可以为您提供所需的大部分内容,您只需要设置一组级联检查,这些检查将从每个元数据系统中采样所需的字段,直到找到一个.例如,像这样:

function get_title($url) {
  $tags = get_meta_tags($url);
  $props = get_meta_props($url);
  return @tags["title"] || @props["og:title"] || ...
}

上面的实现显然效率不高(因为如果我们实现所有这样的getter你重新加载每个getter的URL),并且我没有实现get_meta_props() – 使用pcre_ *正确实现是有问题的并且繁琐到使用DOMDocument实现.

尽管很多工作仍然是一个正确的实现 – 这是外部库解决问题的经典场景!幸运的是,只有一个 – 简称为“嵌入”,你可以在github找到它,或者使用作曲家运行

composer require embed/embed
点赞