php抓取网站图片并保存本地服务器实例

首先举个例子吧。 代码如下:

 代码如下 复制代码

<?php
$text=file_get_contents("http://www.111cn.net");
//取得所有img标签,并储存至二维阵列match

preg_match_all('/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/', $text, $match);

//打印出match
$houzhui = "./tp/".time().rand(10000,50000).".".png;
$yuanname =  getImage($match[1][2],$houzhui,tp);

//下载图片方法

function getImage($url,$filename='',$type=0){
if($url==''){return false;}
if($filename==''){
$ext=strrchr($url,'.');
if($ext!='.gif' && $ext!='.jpg'){return false;}
$filename=time().$ext;
}
//文件保存路径
if($type){
$ch=curl_init();
$timeout=5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$img=curl_exec($ch);
curl_close($ch);
}else{
ob_start();
readfile($url);
$img=ob_get_contents();
ob_end_clean();
}
$size=strlen($img);
//文件大小
$fp2=@fopen($filename,'a');
fwrite($fp2,$img);
fclose($fp2);
return $filename;
}
?>

案例分析,核心代码如下

 代码如下 复制代码

$text=file_get_contents("http://www.111cn.net");

//取得所有img标签,并储存至二维阵列match

preg_match_all('/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/', $text, $match);

 这个正则就是直接获取所有图片不管是http或直接是/aa/aa.gif文件都会自动抓保存到地址了,不过这个会有一些问题图片地址未进行补全了,如我们一个 /a/a/a.gif这样我们是找不到图片的,必须是http://www.111cn.net /a/a/a.gif 这样才可以下载到了,所以我们有必要进行两个处理方法一个是在原基本上处理

 代码如下 复制代码

//文件保存路径
if($type){
$ch=curl_init();
$timeout=5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$img=curl_exec($ch);
curl_close($ch);

上面的$url参数进行地址补全,如我采集的是http://www.111cn.net那么地址自动补全为绝对路径了,另一种办法就是使用修改正则表达式

 代码如下 复制代码

preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|png))/isU",$body,$img_array); 

这样就只获取以http开头的图片文件了哦。

时间: 2025-01-25 10:20:09

php抓取网站图片并保存本地服务器实例的相关文章

php抓取网站图片并保存的实现方法_php技巧

php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享给大家,代码如下: 以上就是为大家分享的php抓取网站图片并保存的实现方法,希望对大家的学习有所帮助.

详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片_java

利用Java抓取网页上的所有图片: 用两个正则表达式: 1.匹配html中img标签的正则:<img.*src=(.*?)[^>]*?> 2.匹配img标签中得src中http路径的正则:http:\"?(.*?)(\"|>|\\s+) 实现: package org.swinglife.main; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream;

Python使用代理抓取网站图片(多线程)_python

一.功能说明:1. 多线程方式抓取代理服务器,并多线程验证代理服务器ps 代理服务器是从http://www.cnproxy.com/ (测试只选择了8个页面)抓取2. 抓取一个网站的图片地址,多线程随机取一个代理服务器下载图片二.实现代码 复制代码 代码如下: #!/usr/bin/env python#coding:utf-8 import urllib2import reimport threadingimport timeimport random rawProxyList = []ch

php 抓取网站图片的简单程序

PHP下载CSS文件中的图片 Java代码   <?   function getImagesFromCssFile() {   //note 设置PHP超时时间       set_time_limit(0);      //note 取得样式文件内容       $styleFileContent = file_get_contents('images/style.css');      //note 匹配出需要下载的URL地址       preg_match_all("/url\(

Python使用scrapy抓取网站sitemap信息的方法_python

本文实例讲述了Python使用scrapy抓取网站sitemap信息的方法.分享给大家供大家参考.具体如下: import re from scrapy.spider import BaseSpider from scrapy import log from scrapy.utils.response import body_or_str from scrapy.http import Request from scrapy.selector import HtmlXPathSelector c

python抓取网页图片并放到指定文件夹_python

python抓取网站图片并放到指定文件夹 复制代码 代码如下: # -*- coding=utf-8 -*-import urllib2import urllibimport socketimport osimport redef Docment():    print u'把文件存在E:\Python\图(请输入数字或字母)'    h=raw_input()    path=u'E:\Python\图'+str(h)    if not os.path.exists(path):      

c++builder-C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者。。多谢了

问题描述 C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者..多谢了 C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者..工作中用到了,各位大牛,兄弟很急,在这里先多谢了!! 解决方案 用idhttp控件很方便的

用Node.js通过sitemap.xml批量抓取美女图片

  这篇文章主要介绍了用Node.js通过sitemap.xml批量抓取美女图片的方法和相关代码,有需要的小伙伴可以参考下. 之前看了很多个版本,自己也搞一个. 1. 支持指定保存到哪个目录 2. 按文章进行分目录存放 3. 支持设置并行下载上限 下次有空再搞个整站下载的. package.json ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 { "name": "me2sex-images", "version&qu

基于php实现七牛抓取远程图片_php实例

由于公司网站之前的用户头像都是存储在自己的服务器上的,后来感觉管理不方便,新增加的用户头像都上传到了七牛,为了方便统一管理,领导说把本地服务器的头像全部迁移到了七牛. 1.梳理下思路 先判断用户的头像是否在七牛,若不存在,本地如果有则抓取到七牛,然后进行批量抓取 2.七牛判断图片是否存在 /** * 查看七牛url是否存在 * @param string $url */ function url_exists($url) { require_once(COMMON_PATH."qiniu/rs.