【问题标题】:A reliable way to scrape title, description and keywords一种可靠的方法来抓取标题、描述和关键字
【发布时间】:2015-12-21 06:58:12
【问题描述】:

目前我正在使用 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> <TITLE> <tiTle>。很难可靠地获得这些。

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

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

这不是重复的。我搜索了stackoverflow和 这种放置所有“标题”、“关键字”和 "description" 类型标签到数组中。

【问题讨论】:

  • 你可以在这里查看第一个答案:stackoverflow.com/questions/12014196/…
  • @Armen 仅与 opengraph 相关。我说的是某种获取所有标题(可能在数组中?)和所有描述的方法。这样网络开发人员就可以决定使用哪些数据。
  • No through DOMDocument 在该示例中,您可以准备好所有需要的元标记并将其分配给某个结果数组,您只需要创建适当的if($meta->getAttribute('property')=='META_NAME'){ 案例来搜索og:imagekeyword,description ...,如果这个答案对你来说不是很清楚,我可以在答案中写更详细的例子
  • 问题是标题有很多不同的格式。我正在寻找一种在标签中查找不区分大小写的单词“title”并从那里开始工作的解决方案。假设人们使用各种不同的标题格式。
  • 看看php.net/manual/en/function.get-meta-tags.php#117176这里有一些解决方案来获取所有元标记,如标题和元描述也看看regex101.com/r/oE4oU9/1

标签: php curl title


【解决方案1】:

通常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() - 这对于使用 @987654325 正确实现是有问题的@ 并且使用 DOMDocument 来实现很繁琐。

尽管有很多工作,但正确的实现仍然是微不足道的 - 这是外部库解决问题的经典场景!幸运的是,有一个就是这样 - 简单地称为“嵌入”,您可以在 github 上找到它,或者使用 composer 运行

composer require embed/embed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2011-08-14
    • 1970-01-01
    • 2023-02-05
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多