如何从网站中提取图片并使用 simple-html-dom 将其下载到本地文件中,以便从文件加载它们,以避免每次从原始文件加载图像网站。
include ('simple_html_dom.php');
$html = file_get_html('http://www.caradisiac.com/');
foreach( $html->find('.featured img') as $image ){
echo $image->src;
echo "<br>";
}
请帮帮我!!
答案 0 :(得分:1)
0 - 确保您已阅读PHP manual以查看PHP具有的所有令人惊奇的内置函数。
1 - 为图片构建本地路径,您可以使用preg_replace
来清理网址
2 - 使用file_exists
检查图像是否尚未下载,如果是,请加载;否则下载
3 - 使用file_get_contents
检索图片(cURL
将无用更重)
4 - 使用file_put_contents
foreach( $html->find('.featured img') as $image )
{
$imageSrc = $image->src;
$imageUri = $this->rel2abs($imageSrc, $sourceURI);
$imageLocalPath = 'getImages/'.preg_replace('/[^a-z0-9-.]/i', '-', $imageUri);
if (!file_exists($imageLocalPath))
{
$imageData = file_get_contents($imageUri, false, $streamContext);
file_put_contents($imageLocalPath, $imageData);
}
else
$imageData = file_get_contents($imageLocalPath);
}
备注:强>
rel2abs
来解析相对URI或任何适当的pecl扩展名。imagecreatefromstring
加载相应的Gd图像。<div class="featured"><img src="http://evil.com/your-heart-will-bleed.php"/></div>
之类的标签,并下载邪恶的php文件。最糟糕的是,可以通过访问您的网站http://mywebsite.com/getImages/your-heart-will-bleed.php
来执行。