此程序实现了网页源代码捕获,图片链接获取、分析、并将同样的图片链接合并功能,实现了图片抓取功能。
利用php强大的网络内容处理函数将指定的网站上的所有图片抓取下来,保存在当前目录下,以下为代码:
<p><?php</p>/*完成网页内容捕获功能*/<br />function get_img_url($site_name){<br /> $site_fd = fopen($site_name, "r");<br /> $site_content = "";<br /> while (!feof($site_fd)) {<br /> $site_content .= fread($site_fd, 1024);<br /> }<br /> /*利用正则表达式得到图片链接*/<br /> $reg_tag = '/<img .*?\"([^\"]*(jpg|bmp|jpeg|gif)).*? alt="php抓取网站图片的程序" >/';<br /> $ret = preg_match_all($reg_tag, $site_content, $match_result);<br /> fclose($site_fd);<br /> return $match_result[1];<br />}<br /><br />/* 对图片链接进行修正 */<br />function revise_site($site_list, $base_site){<br /> foreach($site_list as $site_item) {<br /> if (preg_match('/^http/', $site_item)) {<br /> $return_list[] = $site_item;<br /> }else{<br /> $return_list[] = $base_site."/".$site_item;<br /> }<br /> }<br /> return $return_list;<br />}<br /><br />/*得到图片名字,并将其保存在指定位置*/<br />function get_pic_file($pic_url_array, $pos){<br /> $reg_tag = '/.*\/(.*?)$/';<br /> $count = 0;<br /> foreach($pic_url_array as $pic_item){<br /> $ret = preg_match_all($reg_tag,$pic_item,$t_pic_name);<br /> $pic_name = $pos.$t_pic_name[1][0];<br /> $pic_url = $pic_item;<br /> print("Downloading ".$pic_url." ");<br /> $img_read_fd = fopen($pic_url,"r");<br /> $img_write_fd = fopen($pic_name,"w");<br /> $img_content = "";<br /> while(!feof($img_read_fd)){<br /> $img_content .= fread($img_read_fd,1024);<br /> <br /> }<br /> fwrite($img_write_fd,$img_content);<br /> fclose($img_read_fd);<br /> fclose($img_write_fd);<br /> print("[OK] ");<br /> }<br /> return 0;<br />}<br /><br />function main(){<br />/* 待抓取图片的网页地址 */<br /> $site_name = "http://image.cn.yahoo.com";<br /> $img_url = get_img_url($site_name);<br /> $img_url_revised = revise_site($img_url, $site_name);<br /> $img_url_unique = array_unique($img_url_revised); //unique array<br /> get_pic_file($img_url_unique,"./"); <br />}<br /><br />main();<br /><p>?></p>
此程序还有待完善的地方是,如果图片在网站服务器上不同目录下但文件名是相同的,此时图片有可能是不一样的,但在最后保存时,后面得到的图片会将前面已经保存的图片覆盖掉,如在http://example.com/网站上有图片链接http://example.com/pic/test1.jpg和http://example.com/pic/new/test1.jpg那么在下载时这两张图片只有一张保存,另一张就被覆盖掉,修正的方法是在每次保存前先检索当前目录下是否已有此文件名,有的话对将要保存的图片重新命名即可。

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver Mac版
视觉化网页开发工具