JAVA抓取网页的图片

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("下载失败");
}
}

}

时间: 2024-11-02 16:31:24

JAVA抓取网页的图片的相关文章

详解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;

html-如何用java抓取网页隐藏音频链接

问题描述 如何用java抓取网页隐藏音频链接 我想用java抓取荔枝FM网站上所有的音频文件,但是直接查看网页源码发现找不到页面的音频链接http://www.lizhi.fm/#/25734/20075765977745926,但是我用谷歌的Developer Tools能找到这个链接http://cdn.lizhi.fm/audio/2015/05/16/20075765977745926_hd.mp3,我有点不知道怎么搞了,求帮忙看看什么情况 解决方案 搜索这个页面的data-url 解决

java抓取网页上天气预报的温度

问题描述 java抓取网页上天气预报的温度 我需要从一个网站上获取天气预报的温度值,我选择了新浪网 程序如下 package tianqi; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.IOException; impo

java抓取网页数据数据问题

问题描述 java抓取网页数据数据问题 !红线的位置有错误图片说明 解决方案 写的没见过--给你我常写的把. HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); HttpGet httpGet = new HttpGet(url); 解决方案二: org.apache.http.i

求助! 使用java抓取网页数据

问题描述 我想要抓取这个https://www.bicing.cat/es/formmap网上的有关自行车的信息改怎么样抓取??求指教! 解决方案 解决方案二:请求这个网址,然后把获取到的InputStream读出来,看看有没有你要的数据.newInputStreamReader(((HttpURLConnection)(newURL("https://www.bicing.cat/es/formmap")).openConnection()).getInputStream()); 解

java使用正则抓取网页邮箱_java

使用正则抓捕网上邮箱 这就是我们需要抓捕的网站. 实现思路: 1.使用java.net.URL对象,绑定网络上某一个网页的地址 2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象 3.通过HttpConnection对象的getInputStream()方法获得该网络文件的输入流对象InputStream 4.循环读取流中的每一行数据,并由Pattern对象编译的正则表达式区配每一行字符,取得email地址 下面是我们的代码: pa

java代码抓取网页邮箱的实现方法_java

实现思路: 1.使用java.net.URL对象,绑定网络上某一个网页的地址 2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象 3.通过HttpConnection对象的getInputStream()方法获得该网络文件的输入流对象InputStream 4.循环读取流中的每一行数据,并由Pattern对象编译的正则表达式区配每一行字符,取得email地址 package cn.sdhzzl; import java.io.Buf

PHP实现抓取网页的所有超链接的代码

因为最近要做一个类似专业搜索引擎的东西,需要抓取网页的所有超链接.大家帮忙测试一下子,下面的代码是否可以针对所有的标准超链接. 通用HTML标准超链接参数取得正则表达式测试 因为最近要做一个类似专业搜索引擎的东西,需要抓取网页的所有超链接. 大家帮忙测试一下子,下面的代码是否可以针对所有的标准超链接. 测试代码如下:   <?php  // -------------------------------------------------------------------------- // 

php中如何抓取网页图片

PHP是一门很容易上手的Web编程语言.PHP学习成本很低,能够迅速开发各种Web应用,是一个很优秀的工具. 尽管很多人觉得PHP缺点很多,quick and dirty 之类的,但是"这个世界上只有两种编程语言,一种是饱受争议的,一种是没人用的",不是吗?只要能够把事情做好的工具,就是好工具.PHP就是这么一个优秀的语言工具. 01.<?php 02.header('content-type:text/html;charset=utf-8');03. set_time_limi