下面是详细讲解:
PHP实现爬虫爬取图片代码实例
什么是爬虫?
爬虫(Crawler)是指一种能够按照一定规则自动抓取互联网上信息的程序,也称为网络蜘蛛(Spider)。通俗的理解是自动抓取网页内容并进行处理的程序。
爬虫的基本流程
- 发起请求
- 解析网页内容
- 保存数据
实现步骤
爬虫请求
使用 PHP 的 CURL 函数库来发起请求:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$res = curl_exec($ch);
curl_close($ch);
其中,$url
代表要请求的网页地址,CURLOPT_RETURNTRANSFER
参数设置为 true 表示返回字符串类型的数据,CURLOPT_FOLLOWLOCATION
参数设置为 true 表示自动跟随重定向链接。
解析网页内容
使用 PHP 常用的库 simple_html_dom
来解构 HTML,从而获取图片链接:
$html = str_get_html($res);
$imgs = $html->find('img');
foreach ($imgs as $img) {
$src = $img->src;
// 处理获取的图片链接
}
其中,$res
是请求得到的 HTML 字符串,str_get_html()
函数将 HTML 字符串转换为 DOM 对象,$html->find('img')
获取 HTML 中的所有 img 标签,返回一个数组,遍历数组获取图片链接。
保存数据
遍历获取到的图片链接,使用 CURL 下载图片并保存到本地:
foreach ($imgs as $img) {
$url = $img->src;
$filename = basename($url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$img = curl_exec($ch);
curl_close($ch);
if (file_put_contents($filename, $img)) {
echo "保存成功:$filename";
} else {
echo "保存失败:$filename";
}
}
其中,$url
是图片链接,$filename
是本地保存的文件名,file_put_contents()
函数将下载得到的图片二进制数据写入到本地文件中。
示例说明
示例 1
抓取百度首页上所有图片的链接并保存下来。
$url = 'https://www.baidu.com/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$res = curl_exec($ch);
curl_close($ch);
$html = str_get_html($res);
$imgs = $html->find('img');
foreach ($imgs as $img) {
$url = $img->src;
$filename = basename($url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$img = curl_exec($ch);
curl_close($ch);
if (file_put_contents($filename, $img)) {
echo "保存成功:$filename";
} else {
echo "保存失败:$filename";
}
}
示例 2
抓取豆瓣电影首页上所有电影海报的链接并保存下来。
$url = 'https://movie.douban.com/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$res = curl_exec($ch);
curl_close($ch);
$html = str_get_html($res);
$imgs = $html->find('.billboard-bd img');
foreach ($imgs as $img) {
$url = $img->src;
$filename = basename($url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$img = curl_exec($ch);
curl_close($ch);
if (file_put_contents($filename, $img)) {
echo "保存成功:$filename";
} else {
echo "保存失败:$filename";
}
}
总结
爬虫是一种非常有趣的技能,能够帮助我们自动化处理大量网页数据,从而实现快速获取信息和数据分析处理等应用场景。希望这篇文章能够对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现爬虫爬取图片代码实例 - Python技术站