php - 抓取标题、描述和关键字的可靠方法

标签 php curl title

目前我正在使用 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'];
}

唯一的问题是人们现在正在使用各种元标记,例如 open graph <meta property="og:title" content="The Rock" /> .他们还改变了很多标签 <title> <Title> <TITLE> <tiTle> .很难可靠地获得这些。

我真的需要一些代码来一致地提取这些变量。如果有一些标题、关键字和描述,它会找到它。因为现在它似乎很偶然。

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

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 直接运行

composer require embed/embed

关于php - 抓取标题、描述和关键字的可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34390360/

相关文章:

php - 有效搜索 php 迭代器

bash - 意外的输入结束 : expected close marker for Object error when trying to send a curl post request in a for loop

html - 网页上正确的标题结构?

html - 使用 CSS 或可能的替代方案来设计 'title' 属性?

javascript - 通过 AJAX 进行简单表单 POST 时出现 500 错误 - 不确定出了什么问题?

php - foreach 不填充数组

php - 如何在 PHP 中 cURL 到这种类型的 URL [192.168.1.30 :8080/server]?

jquery - 使用 jQuery 按标题选择一个 div

php - 我在我的 Mac 操作系统上找不到 apache/htdocs,谁能解释以下句子的含义?

php - 通过PHP的curl在ElasticSearch中命中0次,所有命中来自命令行