Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在url'中检测什么;HTML是缩略图吗?_Php_Html_Url_Thumbnails - Fatal编程技术网

Php 在url'中检测什么;HTML是缩略图吗?

Php 在url'中检测什么;HTML是缩略图吗?,php,html,url,thumbnails,Php,Html,Url,Thumbnails,我正在为链接创建一个PHP缩略图应用程序。我获取url的HTML内容,修复它,然后遍历它,找到适合作为该url缩略图的任何内容 第一个选项当然是检查OG(OpenGraph)-让我们把OG放在一边,因为在参数名称或属性中搜索OG:image是一个简单的选项,过程与此问题无关 然而,若并没有OG源代码该怎么办?我想我会检查所有类的内容和id的什么 我要搜索什么字符串?(徽标、拇指等)以及优先顺序是什么 或者是否有任何非外部PHP API提供此功能 编辑 重要< /强>:问题已被误解-问题不在于如

我正在为链接创建一个PHP缩略图应用程序。我获取url的HTML内容,修复它,然后遍历它,找到适合作为该url缩略图的任何内容

第一个选项当然是检查OG(OpenGraph)-让我们把OG放在一边,因为在
参数
名称
属性
中搜索
OG:image
是一个简单的选项,过程与此问题无关

然而,若并没有OG源代码该怎么办?我想我会检查所有类的内容和id的什么

我要搜索什么字符串?(徽标、拇指等)以及优先顺序是什么

或者是否有任何非外部PHP API提供此功能

编辑

<强>重要< /强>:问题已被误解-问题不在于如何遍历DOM树或如何找到<代码> <代码>问题是当搜索它时要考虑什么-什么类名/ ID等等……以及优先顺序。

不确定facebook是如何做到的,也许可以尝试查看facebook文档或谷歌搜索,但这里有一些你可以做的事情让你开始

首先,对旧样式进行回退检查:

<link rel="image_src" href="/myimage.jpg"/>

如果失败,则需要选择适当的图像。您可能会非常喜欢google esc scraping,它尝试将内容放入上下文中,例如仅在主内容框架内查找图像(通过检查其他网站URL和识别通用布局模板来指定)。但首先你可以试试

  • 获取所有图像标记并解析出src属性
  • 清除所有非唯一的源(可能表示社交图标等图标)
  • 将所有图像提取到临时目录
  • 清除任何大小不代表特征图像的图像(即可能小于300px的任何图像?我猜您必须使用它)
  • 清除纵横比大小超出预期特征图像范围的任何图像
  • (可选)在步骤3之前,您可以尝试删除源代码中与另一个图像非常接近的任何图像,这可以识别图像导航菜单之类的内容

    除此之外,可能还需要对被刮的网页进行上下文理解(这可能是facebook所做的)。例如,后面有几个段落的图像可能表示专题文章图像

    最重要的是,如果你把它变成一个工厂类,你可以为特定的站点插入额外的解析器。您可以尝试为常见的网站布局构建和插入更具体的解析器,例如wordpress和其他CMS,其中90%的时间,您可以合理地期望能够识别网站的主要内容区域,至少可以缩小搜索范围(如果模板不太定制,则不能确定文章的确切图像)您可以使用。您可以通过搜索不同类型的标签(img、og标签等)完成如下工作:


    问题不是如何找到图像,而是在寻找时要考虑的问题。我已经为“IMG”置评。你可以使用其他选项,如不,你完全误解了我的问题,你的答案与我的问题无关,对不起,我不得不投反对票-即使我不喜欢这样做。。。如果您愿意再次检查我的实际要求-请检查编辑-您将正确编辑您的答案-我将删除否决票,甚至给您一个赞成票…:)。。。我甚至在最初的问题中写道:“…参数名称或属性是一个简单的问题,这个过程与这个问题无关。”我真的知道如何遍历和搜索DOM树。给你一个提示-总是先用tidy修复HTML-如果HTML无效怎么办…:)我已经编辑了我的question@jave.web:在这种情况下:唯一性、大小、长宽比、关系和上下文只是其中的几个。我很抱歉提供了一个更为翔实的答案。下次我注意到你问问题时,我会确保尽量简短,让你自己解决如何实现它。。。geezTake no冒犯:),我仍然在问上下文分析——如何通过分析图像本身或其父属性来检测其优先级顺序。我们现在互相了解了吗?:)是的,你想要一个非常复杂问题的简单答案。不幸的是,没有任何人能给你一个简单可靠的答案。在你尝试过的OG标签和我在上面放置的回退链接之后,任何事情都会变得复杂,无法正确完成。好吧,我同意我可能误读了你答案的一部分,但我的问题是“我搜索的字符串是什么?”并且问题名称包含“在URL的HTML中”-我会给你投票,因为您的答案至少与问题相关,并且回答了修辞性的“猜测?”问题部分:)注意,我希望避免任何额外的外部图像下载,以便进行图像大小排序:我可以检查“”的html属性,但如果没有该属性怎么办。。。然后我必须先下载图像才能得到它的大小-我说得对吗?
    <?php
    include_once('simple_html_dom.php');
    $url =''; // To be crawled
    $images = array();
    $html = file_get_html($url);
    foreach ($html->find('img') as $img){ // img is an option. 
        if (!empty($img->getAttribute('src')))
        array_push($images, $img->getAttribute('src'));
    }