解析外部HTML并返回图像
Parse external HTML and return images
我正在建立一个依赖bookmarklet的网站。这些bookmarklet提取URL和其他一些元素。但是,我需要从用户书签的页面中选择1个图像。目前我试图使用PHP简单的HTML DOM解析器http://simplehtmldom.sourceforge.net/
按预期提取HTML,并按预期返回标记。然而,我想更进一步,只返回最小宽度为40px的图像。我知道函数getimagesize(),但据我所知,这是资源沉重。是否有更好的方法可以预处理图像并达到我正在寻找的结果?
谢谢!
首先检查图像HTML标签是否有width属性。如果超过40,跳过它。正如Matthew提到的,当人们将大图像缩小到40px宽时,它会得到误报,但这没什么大不了的;这一步的重点是快速清除前十几个明显太大的图像。
一旦脚本捕捉到一个图像说它的宽度在40px以下,检查标题信息,根据文件的大小推断出一个一般的宽度。这比getimagesize快,因为你不需要下载图像来获取信息。
function get_image_kb($path) {
$headers = get_headers($path);
$len = explode(" ",$headers[6]);
return $len[1];
}
$imageKb = get_image_kb('test1.jpg');
// I'm going to gander 40x80 is about 2000kb
$cutoffSize = 2000;
if ($imageKb < $cutoffSize) {
// this is the one!
}
else {
// it was a phoney, keep scraping
}
将其设置为2000kb也会让100x30的图像通过,这不是很好。
然而,在这一点上,您已经清除了大多数巨大的800kb文件,这些文件会真正减慢您的速度,因为我们知道它小于2kb,所以使用getimagesize()测试这个文件以获得准确的宽度并不太费力。
你可以根据你对40px标记的挑剔程度来调整这个过程,通常更高的精度需要更多的时间,反之亦然。
相关文章:
- Imgur API图像搜索未返回数据
- instafeed.js返回的居中图像
- 如何让 IF ELSE 返回图像
- 使用 WebClient 类返回图像数据并在标记中呈现图像
- 高图表导出图表在 IE8 或 IE9 中不返回图像
- 以 HTML 形式返回图像
- 使用jquery如何在浏览器中返回图像后更改图像src属性的http参数
- 如何使用.Net MVC FileContenResult通过ajax返回图像
- 单击后从ALTSRC返回图像SRC
- 检查某个URL是否存在并返回图像
- PHP:检测文本中的url,检查url是图像还是网站,然后返回图像
- 从RESTful WCF服务返回图像
- 在React Native中从Firebase数据库/存储中加载并返回图像
- Google Feed API是否支持从RSS提要返回图像?
- 解析外部HTML并返回图像
- 返回图像的目录
- Twitter API不返回图像
- 如何通过AJAX调用从java bean返回图像
- 用Javascript从HTTP Post请求返回图像
- 返回图像或错误的地址(如果不存在)