我正在寻找一个插件或一个简单的代码,用于从链接 FASTER 中获取图像。我一直在使用http://simplehtmldom.sourceforge.net/从给定链接中提取前3个图像。
simplehtmldom非常慢,我网站上的许多用户都将其报告为问题。
如果我错了,请纠正我,我相信这个插件花了很多时间从我传递的网址中获取完整的html代码,然后搜索img标签。
有人请建议我使用一种技巧来提高获取HTML代码的速度或我可以试用的替代插件吗?
我在想的是获取HTML代码,直到它找到前三个img标签然后终止代码获取过程?事情变得更快。
我不确定是否可以使用php,但我正在努力设计使用jquery。
感谢您的帮助!
答案 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
充其量只是一个不完美的解决方案,但如果速度是主要问题,那么它可能是您的最佳选择。