java捕获一个网站页面的全部图片
直接上代码:
package com.jeecg.util; import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
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; public class CatchImage {
// 地址
private static final String URL = "http://news.163.com/";// 编码
private static final String ECODING = "UTF-8";
// 获取img标签正则
private static final String IMGURL_REG = "<img src=(.*?)[^>]*?>";
// 获取src路径的正则
private static final String IMGSRC_REG = "http:.+(\\.jpeg|\\.jpg|\\.png|\\.gif)\""; 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);
cm.Download(imgSrc);
} /**
*
*
* 获取HTML内容
*
* @param url
* @return
* @throws Exception
**/
private String getHTML(String oldLink) throws Exception {
StringBuffer sb = new StringBuffer();
URL url = new URL(oldLink);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(2000);
connection.setReadTimeout(2000);
if (connection.getResponseCode() == 200) {
InputStream inputStream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line); }
}
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
* @throws FileNotFoundException
**/
private void Download(List<String> listImgSrc) throws Exception {
int count = 0;
ArrayList al = new ArrayList();
for (String urll : listImgSrc) {
System.out.println(urll);
Pattern p = Pattern.compile("\\.jpg|\\.png|\\.gif|\\.jpeg[^_]");
Matcher m = p.matcher(urll);
while (m.find()) {
al.add(m.group());
}
}
for (String url : listImgSrc) {
System.out.println(url);
URL uri = new URL(url);
InputStream in = uri.openStream(); FileOutputStream fo = new FileOutputStream("D:/imgPage/" + count + al.get(count)); 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("下载完成");
count++;
}
System.out.println(count);
}
}
java捕获一个网站页面的全部图片的更多相关文章
- 探究 | 如何捕获一个Activity页面上所有的点击行为
前言 最近逛wanAndroid论坛,发现一个有趣的问题:如何捕获一个Activity页面上所有的点击行为. 一起研究下吧,不想看源码的小伙伴可以直接看文末总结- 准备工作 先得罗列出页面上的一些点击 ...
- 使用Python开发轻量级的Web框架以及基于WSGI的服务器来实现一个网站页面
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目说明 二丶数据准备 三丶使用网络TCP开发一个基于WSGI协议的Web服务器 四丶使用python3开发一个轻量级的 ...
- js实现一个长页面中的图片懒加载即滚动到其位置才加载
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 我是怎么开发一个小型java在线学习网站的
2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...
- 网站页面优化必然趋势—WebP 图片!
本文梗概:众所周知,浏览器可以通过 HTTP 请求的 Accpet 属性 来指定接收的内容类型.依靠这个技术,可以在不修改任何 HTML/CSS 或者图片的情况下,向浏览器提供优化的图片,从而降低带宽 ...
- 如果将Joomla网站搜索结果显示到一个“干净”页面
有时候大家会发现Joomla网站自带的或者第三方的搜索功能时,搜索结果会显示在首页,和首页其它的模块如图片橱窗等显示在一起,非常混乱. 在这里教大家一个不需要修改代码的小技巧来解决这个问题,使搜索结果 ...
- 网站页面打开浏览器table中显示图片
就类似博客园这种:
- 测试网站页面网速的一个简单Python脚本
无聊之余,下面分享一个Python小脚本:测试网站页面访问速度 [root@huanqiu ~]# vim pywww.py #!/usr/bin/python # coding: UTF-8 imp ...
- 蜘蛛页面 获取一个网站的全部url 乐观代码
蜘蛛页面 from selenium import webdriver import time import random from bs4 import * import pymysql h, pt ...
随机推荐
- 关于header file、static、inline、variable hides的一点感想
前言 先看一段代码 #ifndef _INLINE_H #define _INLINE_H template<typename T> static inline T my_max(T a, ...
- 如何为SUSE配置IP地址,网关和DNS
方法一.在命令行中配置.输入: ifconfig eht0 9.111.66.96 netmask 255.255.255.0 up route add default gw 9.111.66.1 方 ...
- CentOS7.5安装SVN和可视化管理工具iF.SVNAdmin
一.安装Apache和PHP 由于iF.SVNAdmin使用php写的,因此我们需要安装php yum install httpd php 二.安装SVN服务器(其中,mod_dav_svn是Apac ...
- R笔记整理(持续更新中)
1. 安装R包 install.packages("ggplot2") #注意留意在包的名称外有引号!!! library(ggplot2) #在加载包的时候,则不需要在包的名称外 ...
- 0031ActiveMQ的下载安装与启动
消息中间件activemq的作用主要是解耦.异步.削峰. 我们按如下步骤详细讲解一下activemq的下载.安装与启动. 1.activemq的下载 下载地址: http://activemq.apa ...
- Zabbix4.0国内下载源
国内zabbix源总结 目前发现的有以下几个站点: 1.阿里巴巴开源镜像站(推荐使用) 地址:https://mirrors.aliyun.com/zabbix/ 2.华为开源镜像站(推荐使用) 地址 ...
- node 日志 log4js 错误日志记录
SET DEBUG=mylog:* & npm start 原文出处:http://blog.fens.me/nodejs-log4js/ 1. 默认的控制台输出 我们使用express框架时 ...
- Centos7安装使用Mysql(mariadb)
安装 shell> yum install mariadb-server -y 配置 # 修改文件 /etc/my.cnf [mysqld]datadir=/mydata/data/mysqlc ...
- dbt 0.13.0 新添加特性sources 试用
dbt 0.13 添加了一个新的功能sources 我呢可以用来做以下事情 从基础模型的源表中进行数据选择 测试对于源数据的假设 计算源数据的freshness source 操作 定义source ...
- 杂乱的Solidity - 2019-7-13
要清楚在区块链上开发DApp的架构[x][][][][][] DApp是去中心化的应用 基于智能合约 去中心化的游戏规则 代币激励