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

发布时间 - 2026-01-10 21:56:35    点击率:

利用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; 
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  # 抓取图片  # JavaWeb项目打开网页出现Session Error的异常解决方案  # java通过Jsoup爬取网页过程详解  # 详解java实现简单扫码登录功能(模仿微信网页版扫码)  # java调用微信接口实现网页分享小功能  # Java实现微信网页授权的示例代码  # Java实现的简单网页截屏功能示例  # java利用url实现网页内容的抓取  # Java导出网页表格Excel过程详解  # 下载图片  # 大家多多  # 中得  # 下载完成  # 正则表达式  # regex  # List  # Matcher  # ArrayList  # Pattern  # InputStream  # URL  # net  # URLConnection  # FileOutputStream  # util  # www  # String  # final  # UTF 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  jQuery 常见小例汇总  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  如何在Windows虚拟主机上快速搭建网站?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  昵图网官网入口 昵图网素材平台官方入口  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel Docker环境搭建教程_Laravel Sail使用指南  昵图网官方站入口 昵图网素材图库官网入口  如何为不同团队 ID 动态生成多个独立按钮  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何快速完成中国万网建站详细流程?  如何在阿里云高效完成企业建站全流程?  简历在线制作网站免费版,如何创建个人简历?  微信h5制作网站有哪些,免费微信H5页面制作工具?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何快速搭建安全的FTP站点?  canvas 画布在主流浏览器中的尺寸限制详细介绍  Android Socket接口实现即时通讯实例代码  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何为不同团队 ID 动态生成多个非值班状态按钮  如何实现javascript表单验证_正则表达式有哪些实用技巧  JavaScript Ajax实现异步通信  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何用美橙互联一键搭建多站合一网站?  如何用花生壳三步快速搭建专属网站?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  MySQL查询结果复制到新表的方法(更新、插入)  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  手机网站制作与建设方案,手机网站如何建设?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  js代码实现下拉菜单【推荐】  微信小程序 scroll-view组件实现列表页实例代码  Internet Explorer官网直接进入 IE浏览器在线体验版网址  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何用好域名打造高点击率的自主建站?  如何在阿里云服务器自主搭建网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  Laravel怎么连接多个数据库_Laravel多数据库连接配置  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel模型事件有哪些_Laravel Model Event生命周期详解  如何在景安服务器上快速搭建个人网站?