首先需要加入 jsoup-1.8.1 这个jar包。
/**
* 获取指定HTML 文档指定的body
*/
private Map<String, String> BolgBody(String url) throws IOException {
Map<String, String> resultMap = new HashMap<String, String>();
// 直接从字符串中输入 HTML 文档
// 从 URL 直接加载 HTML 文档
Document doc2 = Jsoup.connect(url).get();
// 抓取网页的标题
Elements links = doc2.getElementsByTag("title");
for (Element link : links) {
String linkText = link.text();
if (linkText != null) {
resultMap.put("title", linkText);
}
}
// 抓取网页的图片
Elements pngs = doc2.select("img[src$=.png],[src$=.jpg]");
List<String> images = new ArrayList<String>();
if (pngs != null) {
for (Element element : pngs) {
System.out.println(element.toString());
String m = element.attr("src");
System.out.println(m);
// 这里主要判断是否存在http这个开头,如果不存在判断图片尺寸的方法可能会报错,所以要加上(百度首页没有)
Boolean s = m.contains("http");
if (s == false) {
m = "http:" + m;
}
System.out.println(s);
images.add(m);
}
}
List<String> srcList = getImgSize(images, 300, 300);
System.out.println(srcList.toString());
if (srcList != null) {
for (String src : srcList) {
resultMap.put("src", src);
}
}
return resultMap;
}
根据src判断图片的尺寸是否符合要求,返回符合要求的src路径的集合。
/**
* 获取指定范围内的图片
*
* @param list
* @return
*/
public List<String> getImgSize(List<String> list, Integer width, Integer height) {
BufferedImage sourceImg = null;
List<String> srclist = new ArrayList<String>();
try {
if (null != list && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
String src = list.get(i);
URL url = new URL(src);
// 根据url获取BufferImage对象
sourceImg = ImageIO.read(url);
// 获取图片的宽度和高度
Integer w = Integer.valueOf(sourceImg.getWidth());
Integer h = Integer.valueOf(sourceImg.getHeight());
System.out.println("图片宽:" + w + "\n图片高:" + h);
if (w > width && h > height) {
srclist.add(src);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return srclist;
}
根据指定src路径下载图片
/**
* 根据路径下载图片
*
* @param urlString
* 图片地址
* @param filename
* 名称
* @param savePath
* 保存地址
* @throws Exception
*/
public void download(String urlString, String filename, String savePath) throws Exception {
// 构造url
URL url = new URL(urlString);
// 打开连接
URLConnection conn = url.openConnection();
conn.setConnectTimeout(5 * 1000);
InputStream inputStream = conn.getInputStream();
byte[] sb = new byte[1024];
int len;
File file = new File(savePath);
if (!file.exists()) {
file.mkdirs();
}
OutputStream os = new FileOutputStream(file.getPath() + "\\" + filename);
while ((len = inputStream.read(sb)) != -1) {
os.write(sb, 0, len);
}
os.close();
inputStream.close();
}
/**
* 获取后缀
*
* @param fileUrl
* @return
*/
public String getExtension(String fileUrl) {
return fileUrl.substring(fileUrl.lastIndexOf("."), fileUrl.length());
}