`

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

阅读更多


利用java抓取网页上的所有图片:

用两个正则表达式:

1、匹配html中img标签的正则:<img.*src=(.*?)[^>]*?>

2、匹配img标签中得src中http路径的正则:http:\"?(.*?)(\"|>|\\s+)


实现:

[java] view plaincopyprint?

    package org.swinglife.main; 
     
    import java.io.File; 
    import java.io.FileOutputStream; 
    import java.io.InputStream; 
    import java.net.URL; 
    import java.net.URLConnection; 
    import java.util.ArrayList; 
    import java.util.List; 
    import java.util.regex.Matcher; 
    import java.util.regex.Pattern; 
     
    /***
     * java抓取网络图片
     * @author swinglife
     *
     */ 
    public class CatchImage { 
     
        // 地址 
        private static final String URL = "http://www.csdn.net"; 
        // 编码 
        private static final String ECODING = "UTF-8"; 
        // 获取img标签正则 
        private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>"; 
        // 获取src路径的正则 
        private static final String IMGSRC_REG = "http:\"?(.*?)(\"|>|\\s+)"; 
     
         
        public static void main(String[] args) throws Exception { 
            CatchImage cm = new CatchImage(); 
            //获得html文本内容 
            String HTML = cm.getHTML(URL); 
            //获取图片标签 
            List<String> imgUrl = cm.getImageUrl(HTML); 
            //获取图片src地址 
            List<String> imgSrc = cm.getImageSrc(imgUrl); 
            //下载图片 
            cm.Download(imgSrc); 
        } 
         
         
        /***
         * 获取HTML内容
         * 
         * @param url
         * @return
         * @throws Exception
         */ 
        private String getHTML(String url) throws Exception { 
            URL uri = new URL(url); 
            URLConnection connection = uri.openConnection(); 
            InputStream in = connection.getInputStream(); 
            byte[] buf = new byte[1024]; 
            int length = 0; 
            StringBuffer sb = new StringBuffer(); 
            while ((length = in.read(buf, 0, buf.length)) > 0) { 
                sb.append(new String(buf, ECODING)); 
            } 
            in.close(); 
            return sb.toString(); 
        } 
     
        /***
         * 获取ImageUrl地址
         * 
         * @param HTML
         * @return
         */ 
        private List<String> getImageUrl(String HTML) { 
            Matcher matcher = Pattern.compile(IMGURL_REG).matcher(HTML); 
            List<String> listImgUrl = new ArrayList<String>(); 
            while (matcher.find()) { 
                listImgUrl.add(matcher.group()); 
            } 
            return listImgUrl; 
        } 
     
        /***
         * 获取ImageSrc地址
         * 
         * @param listImageUrl
         * @return
         */ 
        private List<String> getImageSrc(List<String> listImageUrl) { 
            List<String> listImgSrc = new ArrayList<String>(); 
            for (String image : listImageUrl) { 
                Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(image); 
                while (matcher.find()) { 
                    listImgSrc.add(matcher.group().substring(0, matcher.group().length() - 1)); 
                } 
            } 
            return listImgSrc; 
        } 
     
        /***
         * 下载图片
         * 
         * @param listImgSrc
         */ 
        private void Download(List<String> listImgSrc) { 
            try { 
                for (String url : listImgSrc) { 
                    String imageName = url.substring(url.lastIndexOf("/") + 1, url.length()); 
                    URL uri = new URL(url); 
                    InputStream in = uri.openStream(); 
                    FileOutputStream fo = new FileOutputStream(new File(imageName)); 
                    byte[] buf = new byte[1024]; 
                    int length = 0; 
                    System.out.println("开始下载:" + url); 
                    while ((length = in.read(buf, 0, buf.length)) != -1) { 
                        fo.write(buf, 0, length); 
                    } 
                    in.close(); 
                    fo.close(); 
                    System.out.println(imageName + "下载完成"); 
                } 
            } catch (Exception e) { 
                System.out.println("下载失败"); 
            } 
        } 
     
         
    } 




分享到:
评论

相关推荐

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

    主要介绍了详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片,非常具有实用价值,需要的朋友可以参考下。

    网页抓取 正则表达式 前台处理json对象

    这是从我们公司的项目中抽取出来的一部分功能,也是我负责的前台部分。

    使用正则表达式抓取页面Email

    NULL 博文链接:https://lgd-java2eye.iteye.com/blog/756027

    Java用正则表达式如何读取网页内容

    java用正则表达式读取网页内容,通过抓取文章标题及内容,进一步专区整个页面的全部内容,本文代码简单易懂,对java用正则表达式读取网页内容感兴趣的朋友可以参考下

    Java正则表达式使用

    本篇文章主要给大家介绍java在正则表达式的使用,本篇文章给大家主要介绍应用点在抓取网页中的email地址和代码统计,感兴趣的朋友一起看看吧

    利用正则表达式抓取博客园列表数据

    主要介绍了利用正则表达式抓取博客园列表数据的相关资料,需要的朋友可以参考下

    java正则表达式获取url的host示例

    使用httpclient抓取页面信息时需要填写HOST,使用此正则提取抓取URL的HOST内容

    网页爬虫工具能够抓取网页信息的软件

    网页爬虫工具能够抓取网页信息的软件网页爬虫工具[PClawer] V1.1 绿色版 PClawer 是一款定制功能较强的网页抓取工具,需要用到正则表达式,适合高级用户使用

    java post获取网页数据以及get方式获取数据

    在文件里面,数据的抓取为正则表达式方式抓取数据 实现的方式有。 1.根据文件中出现的字符进行抓取。 2。可以抓取前后2端的中间数据 3。可以抓取前后(不包括前端和后端的数据)的中间的数据。 还有,懒的说了。上...

    抓取电子邮件的Java代码

    这是我自己写的抓取网页上电子邮件地址的Java代码。 界面使用Swing。主要用到的: *1.GUI * 2.事件相应 * 3.正则表达式 * 4.输入输出流 * 5.设计思想:大管家式的。其他类必须持有大管家的引用 不好意思,前天改...

    网络爬虫java

    网络爬虫,用java简单实现,能实现对一个网站的信息抓取,只需要修改一下正则表达式就行。

    java项目源码之网络爬虫(蜘蛛)的实现.rar

    这个Java项目是一个网络爬虫,也称为网络蜘蛛,旨在自动地从互联网上抓取网页内容并进行处理。该网络爬虫具有以下主要功能: 网页抓取:通过指定的起始URL,网络爬虫会递归地抓取网页内容,包括HTML、CSS、...

    Boss直聘Java爬虫.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    搜索链接Java网络爬虫(蜘蛛)源码-zhizhu

    数据提取:根据特定的规则或正则表达式,从解析后的HTML中提取出目标数据。 多线程与异步处理:为了提高抓取效率,可以使用多线程技术同时抓取多个网页;使用异步处理来优化网络请求和数据处理。 反爬虫策略应对:...

    Java毕业设计-[搜索链接]Java网络爬虫(蜘蛛)源码_zhizhu.rar

    3. **数据解析**:利用正则表达式或HTML解析库(如Jsoup)从网页中提取所需数据。 4. **存储处理**:支持将抓取到的数据存储到数据库、文件系统或第三方平台中。 5. **异常处理**:遇到异常情况时,能够自动重试或...

    20171207 爬虫需求分析1

    2. 具有微信、微博至少一种自媒体平台的爬取经验 3. 熟悉Python或Java语言 4. 熟悉多线程、网络编程,精通网页抓取原理及技术,精通正则表达式,能从

    java爬虫 webmagic 抓取egmentfault文章.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    javaURL抓取知乎explore页面上热门问题和回答的爬虫程序.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

Global site tag (gtag.js) - Google Analytics