- 浏览: 1590186 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
本文介绍
1.利用正则 匹配到网页上的 图片的路径 和标题
2.然后下载
3.然后上传到服务器
1.利用正则 匹配到网页上的 图片的路径 和标题
2.然后下载
3.然后上传到服务器
public class Picture { private String title; private String source; private String upPath; //get set ... }
import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.sun.xml.internal.fastinfoset.stax.events.Util; public class CatchPicture { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //定义抓取图片的 正则表达式 String regular="[*]<b>.*?</b><br/><img src=\"(.*?)\" border=0 alt=\'(.*?)\' style=\".*?\" class=\".*?\"> "; List<Picture> list=new CatchPicture().lookWeiboPic("http://gaoxiao.jokeji.cn/GrapHtml/dongtai/20120921221658.htm","GBK",regular,"2,1"); System.out.println(list.size()); } //根据URL查看网站上的图片 public List<Picture> lookWeiboPic(String url,String charset,String regular,String attIndex){ List<Picture> list=new ArrayList<Picture>(); try { //获取填写的url //判断所属网站 获取 正则表达式 //获取图片存放到 list集合 if(!Util.isEmptyString(url)){ String htmls = getPageSource(url.trim(),charset); Pattern pattern =null; pattern = Pattern.compile(regular.trim()); if(!Util.isEmptyString(htmls)){ Matcher matcher = pattern.matcher(htmls); //得到参数属性顺序 String[] sort = regular.trim().split(","); //下标:0 表示 标题title , 1 表示 图片路径 //判断后缀后 得到网站的请求头部 http://www.moonbasa.com/p-032111106.html-->得到 http://www.moonbasa.com String[] suffix; suffix =url.trim().split("cn"); String httphread = ""; if (suffix.length > 1) { httphread = suffix[0] + "cn"; } else { suffix = url.trim().split("com"); httphread = suffix[0] + "com"; } //循环匹配找到的 while(matcher.find()){ Picture picture=new Picture(); //匹配出title if (-1 == Integer.parseInt(sort[0])) { // 页面上抓不到标题 picture.setTitle(""); } else { // 去标题的# String title=matcher.group(Integer.parseInt(sort[0])).replace("#", " "); picture.setTitle(title); } //匹配出source if (-1 == Integer.parseInt(sort[1])) { // 页面上抓不到图片路径 picture.setSource(""); }else{ String webImgUrl=matcher.group(Integer.parseInt(sort[1])); //判断是绝对路径还是相对路径 String[] pathType=webImgUrl.split(":"); if(pathType.length>1){ //绝对路径 picture.setSource(webImgUrl); }else{ //判断相对路径是否含有.. pathType=webImgUrl.split("\\.\\."); if(pathType.length>1){ picture.setSource(httphread+pathType[1]); }else{ if(webImgUrl.startsWith("/")){ picture.setSource(httphread+pathType[0]); }else{ picture.setSource(httphread+"/"+pathType[0]); } } } } String upPath=upload(picture.getSource(),"d:\\image\\"); picture.setUpPath(upPath); list.add(picture); }//--end while } } }catch (Exception e) { e.printStackTrace(); } return list; } /** * 根据网路路径获取 页面源码 * @param pageUrl * @param encoding * @return */ public String getPageSource(String pageUrl,String encoding) { StringBuffer sb = new StringBuffer(); try { //构建一URL对象 URL url = new URL(pageUrl); //使用openStream得到一输入流并由此构造一个BufferedReader对象 BufferedReader in = new BufferedReader(new InputStreamReader(url .openStream(), encoding)); String line; //读取www资源 while ((line = in.readLine()) != null) { sb.append(line); sb.append("\n"); } in.close(); } catch (Exception ex) { System.err.println(ex); } return sb.toString(); } /** * 上传 图片 * @param urlStr * @param path * @return * @throws Exception */ public String upload(String urlStr,String path) throws Exception{ Calendar calendar = Calendar.getInstance(); String month = calendar.get(Calendar.YEAR) + "/" + (calendar.get(Calendar.MONTH) + 1); String filename = java.util.UUID.randomUUID().toString() + getExtension(urlStr); path =path + month + "/"; download(urlStr,path,filename); return path+month + "/" + filename; } /** * 根据路径 下载图片 然后 保存到对应的目录下 * @param urlString * @param filename * @param savePath * @return * @throws Exception */ public void download(String urlString, String filename,String savePath) throws Exception { // 构造URL URL url = new URL(urlString); // 打开连接 URLConnection con = url.openConnection(); //设置请求的路径 con.setConnectTimeout(5*1000); // 输入流 InputStream is = con.getInputStream(); // 1K的数据缓冲 byte[] bs = new byte[1024]; // 读取到的数据长度 int len; // 输出的文件流 File sf=new File(savePath); if(!sf.exists()){ sf.mkdirs(); } OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename); // 开始读取 while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } // 完毕,关闭所有链接 os.close(); is.close(); } /** * 根据文件名 获取文件的后缀名 * @param fileUrl * @return */ public String getExtension(String fileUrl){ return fileUrl.substring(fileUrl.lastIndexOf("."), fileUrl.length()); } }
发表评论
-
POST发送XML数据
2013-10-16 14:09 9977package com.itheima.xml; i ... -
发送 GET 和 POST请求
2013-10-05 11:28 3310/** *@param url 发送请求的url ... -
Java 多线程断点续传 (基于HTTP)
2013-03-14 09:42 8866http://wenku.baidu.com/view/57f ... -
Java 多线程断点续传 (基于HTTP)
2013-03-13 23:13 957http://wenku.baidu.com/view/57f ... -
Socket 点对点 通信
2013-03-13 12:54 4382Socket通常称作为 "套接字",用于描 ... -
Socket 点对面 通信
2013-03-13 12:53 1586Socket 点对面 通信 创建多客户连接的socket通信 ... -
Socket 点对点通信
2013-03-12 20:07 934Socket通常称作为 "套接字",用于描 ... -
FTP 上传 下载 登录
2013-03-12 11:20 32231.使用 Serv-U 在本机上创建一个 FTP服务器 h ... -
FTP 登录 下载 上传 文件
2013-03-11 22:43 101.使用 Serv-U 在本机上创建一个 FTP服务器 h ... -
URL 获取网络资源
2013-03-11 09:23 1980URL 获取网络资源 packag ... -
IP地址和域名的获取
2013-03-10 21:44 1446InetAddress 获取 IP地址和域名 packag ... -
java 下载网络上的图片并保存到本地目录
2012-09-22 02:32 57453import java.io.File; import ... -
java 根据URL获取网页源码
2012-09-21 00:20 11275import java.io.BufferedReader ...
相关推荐
### Java抓取网页图片链接地址 #### 知识点概览 本文将详细介绍如何使用Java编程语言抓取网页上的图片链接。此技术广泛应用于网络爬虫、数据分析等领域,能够帮助开发者快速获取所需的图像资源。 #### 技术背景与...
### Java获取网页中图片的方法与判断网页代码中是否包含有效图片 在当今互联网时代,从网页中抓取图片是常见的需求之一,特别是在数据抓取、网络爬虫或内容分析等应用中。Java作为一种广泛使用的编程语言,提供了...
Java获取网页中的图片资源,启动线程,智能解析URL,加载图片资源,显示图片数据,测试时候请用IE打开useTrackedImage.html 文件,载入图像文件,并获取该图像文件。本Java例子主要是利用java.awt.MediaTracker 类来...
通过发送HTTP请求到服务器,获取响应数据,从而获取网页内容。 2. **HTML解析**:抓取到的网页内容通常是HTML格式,因此需要解析HTML来提取图片信息。Java提供了多种库,如Jsoup,用于解析HTML文档,找出图片链接。...
例如,可以执行一个JavaScript脚本来获取网页的canvas元素,然后调用`toDataURL()`方法将canvas内容转换为Base64编码的图像数据。 5. **处理图像数据**:在Java端接收到Base64编码的图像数据后,将其解码并保存为...
本教程将详细介绍如何通过URL地址获取网页并生成jpg图片,同时解决32位和64位运行环境下的兼容性问题。我们将主要使用Java语言来实现这一功能,因为它具有丰富的库和跨平台的特性。 首先,我们需要一个能够处理网络...
Java爬虫技术是一种用于自动化获取网页内容的程序,它能够模拟人类浏览器的行为,遍历互联网上的页面,提取所需的信息。在本场景中,我们将重点讨论如何利用Java编写爬虫来抓取网页内容并下载其中的图片。 首先,...
在这个"HTTP.rar"压缩包中,我们有一个Java项目,它专门设计用来从指定的HTTP网页中抓取并保存图片。 首先,我们需要理解HTTP协议。HTTP是一种应用层协议,基于TCP/IP通信,允许客户端(如浏览器)向服务器请求资源...
在Web开发和数据抓取领域,Java爬虫技术是实现网页自动化信息提取的重要手段。本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据...
DJNativeSwing可能提供API来获取当前视口的图像,然后通过多次滚动和截图,合并成一个完整的网页图片。 4. **图像合成**: 由于网页可能比屏幕可视区域大,因此需要将多个小图像拼接起来。Java的图像处理库,如Java ...
在Java编程中,抓取网页图片是一项常见的任务,特别是在数据抓取、网页分析或爬虫项目中。本文将详细介绍如何利用Java和正则表达式来抓取网页中的图片链接,并下载这些图片。以下是一个简单的Java程序示例,用于实现...
在Java编程中,生成网页快照是一项常见的任务,它主要用于数据抓取、搜索引擎优化(SEO)或者是为了离线浏览。这个任务通常涉及到网络编程、多线程和网页解析技术。以下将详细介绍如何根据给定的URL利用Java实现线程...
根据给定的文件信息,我们可以总结出以下与“用Java代码下载网页图片”相关的知识点: ### 1. Java网络编程基础 #### 1.1 URL类的理解与使用 在Java中,`java.net.URL` 类提供了对统一资源定位符 (Uniform ...
java的封装类,可以从指定网络地址,抓取地址中的网页,并分析抓取图片地址,下载到本地
综上所述,"java 生成网页图片Web源代码"涉及了Java图像处理的基础知识,动态图表生成,服务器端生成图片并返回给Web客户端,以及与前端的交互和安全考虑等多个方面。通过深入理解和实践这些技术,可以构建出高效且...
要获取网页的可视区域截图,可以调用`takeScreenshot`方法: ```java TakesScreenshot screenshot = (TakesScreenshot) driver; File srcFile = screenshot.getScreenshotAs(OutputType.FILE); ``` 5. **保存...
请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则...
- **HTTP请求**:使用`java.net.URL`和`URLConnection`类来发起HTTP请求并获取网页的HTML内容。 - **资源定位**:通过解析HTML文档,使用`org.htmlparser`库或其他HTML解析库来提取页面中的资源链接,如图片、样式...
在构建浏览器时,你需要使用`java.net.URL`类来解析和打开网页URL,通过HttpURLConnection或者HttpClient发起HTTP请求获取网页数据。 2. **HTTP协议理解**:HTTP(超文本传输协议)是互联网上应用最为广泛的一种...
在Java编程语言中,截取指定网页并保存为图片是一项常见的需求,比如用于网页快照、自动化测试或者数据抓取等场景。实现这个功能通常涉及网络请求、网页解析以及图像处理等多个方面。以下是一个详细的步骤解析: 1....