从网页上更快地获取图像

时间:2013-01-25 17:38:10

标签: php jquery simple-html-dom

我正在寻找一个插件或一个简单的代码,用于从链接 FASTER 中获取图像。我一直在使用http://simplehtmldom.sourceforge.net/从给定链接中提取前3个图像。

simplehtmldom非常慢,我网站上的许多用户都将其报告为问题。

如果我错了,请纠正我,我相信这个插件花了很多时间从我传递的网址中获取完整的html代码,然后搜索img标签。

有人请建议我使用一种技巧来提高获取HTML代码的速度或我可以试用的替代插件吗?

我在想的是获取HTML代码,直到它找到前三个img标签然后终止代码获取过程?事情变得更快。

我不确定是否可以使用php,但我正在努力设计使用jquery。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

跨站点脚本规则将阻止您在jQuery / JS中执行此类操作(除非您控制将从中获取内容的所有域)。在任何情况下,你所做的事情都不会超快,但尝试使用file_get_content()DOMDocument配对来编写自己的... DOMDocument getElementsByTagName方法可能比simplehtmldom更快find()方法。

您也可以尝试使用正则表达式方法。 It won't be as fool-proof作为一个真正的DOM解析器,但它可能会更快......类似于:

$html = file_get_contents($url);
preg_match_all("/<img[^']*?src=\"([^']*?)\"[^']*?>/", $html, $arr, PREG_PATTERN_ORDER);

如果您想避免读取整个大文件,您还可以跳过file_get_contents()调用并在fopen(); while(feof())循环中进行子操作,只需在从远程服务器读取每一行后检查图像。但是,如果采用这种方法,请确保regex使用WHOLE缓冲字符串,而不仅仅是最新的字符串,因为您可以轻松地将图像的代码分成几行。

请记住,HTML中的实际可变性会使regex充其量只是一个不完美的解决方案,但如果速度是主要问题,那么它可能是您的最佳选择。