Php 从网站获取元数据的最快方法

Php 从网站获取元数据的最快方法,php,html,preg-match,metadata,Php,Html,Preg Match,Metadata,我正在尝试从网站获取“标题”,目前我正在使用preg_match获取标题,但加载速度非常慢 我现在所拥有的: 这会将链接传递到一个函数: <?php foreach($savedLinks as $s) { echo "<div class='savedLink'>"; echo "<h5>" . getMetaData($s) . "</h5>"; echo "<a href='" . $s . "'&g

我正在尝试从网站获取“标题”,目前我正在使用
preg_match
获取标题,但加载速度非常慢

我现在所拥有的:

这会将链接传递到一个函数:

<?php 
foreach($savedLinks as $s)
{
    echo "<div class='savedLink'>";
        echo "<h5>" . getMetaData($s) . "</h5>";
        echo "<a href='" . $s . "'>" . $s . "</a><br />";
    echo "</div>";
}
?>

我要冒险一试,猜测文件获取内容比preg\u匹配要花的时间长得多,我希望这会非常快

如果您在许多站点上执行此操作,此方法可能不起作用,但您可能希望查看字节范围请求。如果可以预测标记位于HTML响应的前X个字节内,则可以使用字节范围执行部分请求,从而避免为了获取标题标记而将整个文档移动到网络上。如果页面是动态生成的,则需要服务器上的代码支持这一点。如果它们是静态文档,则很有可能支持字节范围请求


正如第二个答案中的示例所示,也可以尝试通过将“Connection:close”更改为“Connection:keep alive”来启用keepalive。同样,只有在多次访问同一台服务器并且该服务器已启用时,此功能才有效。这两件事加在一起可以为每个请求节省大量时间。

您需要一个DOM解析器来快速检索HTML页面信息。我在示例中使用了以下DOM解析器:

下载:

<?php

   include('simplehtmldom_1_5/simple_html_dom.php');

   // Create DOM from URL or file
   $html = file_get_html('http://joinform.com.au');


   foreach($html->find('title') as $e)
      echo $e->innertext . '<br>';


?>

例如:

<?php

   include('simplehtmldom_1_5/simple_html_dom.php');

   // Create DOM from URL or file
   $html = file_get_html('http://joinform.com.au');


   foreach($html->find('title') as $e)
      echo $e->innertext . '<br>';


?>


一个单词我尝试过DOM,但当尝试从大约10个页面获取“标题”时,它的加载速度开始非常慢。您好,我尝试过您的方法,当获取10多个不同网站的“标题”时,加载页面仍然需要约10>秒。您不能忽略与其他网站的连接时间。只有当你有非常高速的互联网连接时才有可能。我不太确定如何使用此方法获取网站“标题”?你能发布一个你将为标题刮取的URL,这样我就可以查看它是否正确支持字节范围请求,并发布一些工作代码吗?不幸的是,YouTube看起来不支持字节范围请求它的HTML页面。我发送了一个范围标头,得到了200个响应,而不是预期的206个“部分”。如果你的目标是YouTube,你只需要从YouTube上获得更快的连接即可。尝试使用curl,这样您就可以请求Connection:keepalive,这将使后续请求更快一些(也许)。