jsoup替换网页中的连接

原创 2013年12月03日 20:21:29
package htmlJsoupUtil;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.http.ParseException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import resourcencodeUtil.IdentifyCode;
public class DealLinkUtil {
	
	private static final String prefix="http://localhost:8080/Proxy/servlet/";
	public static String modifyLink(String html,String baseUri) throws MalformedURLException, IOException{
		Document doc=Jsoup.parse(html,baseUri);
		
		
		Elements elements=doc.select("a[href!=#]");
		adsoluteAHref(elements);
		Elements jsElements=doc.select("script[src]");
		absoluteScriptSrc(jsElements);
		
		Elements formElements=doc.select("form[action]");
		absoluteFormAction(formElements);
		
		Elements linkElements=doc.select("link[href]");
		absoluteLinkHref(linkElements);
		
		
		
		Element  base=doc.select("base").first();
		if(base!=null){
		System.out.println(base.attr("href"));
		base.attr("href", prefix);}else{
			Element head=doc.select("head").first();
			head.append("<base href=\""+prefix+"\">");
		}
		
		return doc.toString();
	}
	
	public static void modifyCssurl(String urlpath) throws IOException{
		URL url=new URL("http://localhost:8080/novel/User/register.jsp");//
//		URL url=new URL("http://www.baidu.com/");
		Document doc=Jsoup.parse(url.openStream(), IdentifyCode.getFileCode(url), "http://sdfsdfsddfBYSJ/");
		Elements  css=doc.select("[style]");//获取所有含有style属性的元素
		IteratorElements(css);
		
		Elements styleCss=doc.select("style");//获得html中的样式标签如<style type="text/css"></style>
		IteratorStyle(styleCss);
		
		Elements scriptJs=doc.select("script");//获得<script type="text/javascript"></script>
		IteratorStyle(scriptJs);
	}
	
	//处理<script type="text/javascript">脚本
	public static void IteratorStyle(Elements elements){
		Iterator<Element> iterator=elements.iterator();
		while(iterator.hasNext()){
			Element element=iterator.next();
				System.out.println(element.data());//获得<script type="text/javascript">中的值
													//<style type="text/css"></style>中的值
		}
	}
	
	//得到元素中内嵌样式style中的值如<div style="width:100px;">
	public static void IteratorElements(Elements elements){
		Iterator<Element> iterator=elements.iterator();
		while(iterator.hasNext()){
			Element element=iterator.next();
			String style=element.attr("style");
			System.out.println(style);
			getURL(style);
		}
	}
	//从style中获得 url的值
	public static void getURL(String url){
		Pattern p = Pattern.compile("url\\((.*)\\)");//匹配  url(任何)
		Matcher m = p.matcher(url);
		if(m.find()){
			System.out.println(m.group(1));//获取括号中的地址
		}
	}
	//将Form action 装换为绝对的url
	public static void absoluteFormAction(Elements formElements){
		Iterator<Element> iterator=formElements.iterator();
		while(iterator.hasNext()){
			Element element=iterator.next();
			String action=element.attr("abs:action");//将所有的相对地址换为绝对地址;
			//添加隐藏域,用来传替url。
			element.append("<input type='hidden' name='action' value='"+action+"'/>");
			element.attr("action",prefix+ "Actionjsp");//装换为
			
		}
	}
	
	//将<script src>转换为绝对地址 
	public static void absoluteScriptSrc(Elements jsElements) throws MalformedURLException{
		Iterator<Element> iterator=jsElements.iterator();
		while(iterator.hasNext()){
			Element element=iterator.next();
			String src=element.attr("abs:src");//将所有的相对地址换为绝对地址;
			element.attr("src",prefix+"Jsjsp?src="+src);//装换为
	//		element.attr("charset",IdentifyCode.getFileCode(src));
		}
	}
	
	//将Img src 装换为绝对的url
	public static void absoluteImagSrc(Elements imagElements) throws MalformedURLException{
		Iterator<Element> iterator=imagElements.iterator();
		while(iterator.hasNext()){
			Element element=iterator.next();
			String src=element.attr("abs:src");//将所有的相对地址换为绝对地址;
			element.attr("src",prefix+"Imgjsp?src="+src);//装换为
			
		}
	}
	
	//将Link href 装换为绝对的url
		public static void absoluteLinkHref(Elements linkElements) throws MalformedURLException{
			Iterator<Element> iterator=linkElements.iterator();
			while(iterator.hasNext()){
				Element element=iterator.next();
				String src=element.attr("abs:href");//将所有的相对地址换为绝对地址;
				element.attr("href",prefix+ "Linkjsp?href="+src);//装换为
	//			element.attr("charset",IdentifyCode.getFileCode(src));//设置外部文件的编码
			}
		}
	//将所有的的<a href>转换为绝对地址
	public static void adsoluteAHref(Elements AElements){
		Iterator<Element> iterator=AElements.iterator();
		while(iterator.hasNext()){
			Element element=iterator.next();
			String href=element.attr("abs:href");//将所有的相对地址换为绝对地址;
			element.attr("href",prefix+"Ajsp?url="+href);
		}
	}
	
	
	public static void main(String args[]) throws ParseException, IOException{
	/*	HttpClient httpClient=TestCookie.GetHttpClient();
		String htmlpage=TestCookie.getPageByGet(httpClient, "http://book.hao123.com/");
		System.out.println(modifyLink(htmlpage,"http://localhost:8080/Proxy"));*/
		modifyCssurl("http://www.hao123.com/?tn=98784002_hao_pg");
	}
}


用jsoup实现html中img标签的替换

原文   http://blog.csdn.net/mobilexu/article/details/9670565 主题 HTML 做app的时候经常要用webview解析...
  • liujunlu12
  • liujunlu12
  • 2016年06月13日 10:34
  • 2642

JSoup获取网页中的链接

在使用JSoup进行网页解析的过程中,我们常常被要求获取网页中的链接。通过查看网页的源代码我们可以发现,网页中的链接一般是作为不同标签的属性来保存的,例如标签a中的href,标签img中的src等。那...
  • yangfeisc
  • yangfeisc
  • 2015年03月10日 15:06
  • 1535

利用jsoup抓取指定网页的照片【也可以修改一下抓取其他内容】

本来是无意中看到有人在学校发了一些美图,你懂的,自己就动手把相关网站的部分图片抓取下来,思路很简单,将html文档转为document,然后利用jsoup提取id为index-pic的div标签。。。...
  • pan_you0
  • pan_you0
  • 2015年10月26日 23:57
  • 357

jsoup替换网页中的链接demo

package htmlJsoupUtil; import java.io.IOException; import java.net.MalformedURLException; imp...
  • tiantangmuxin
  • tiantangmuxin
  • 2015年08月09日 22:24
  • 142

使用Jsoup提取HTML元素,修改HTML内容

Jsoup是一个开源的,专门处理HTML内容的强大工具,下载地址+中文文档地址:http://www.open-open.com/jsoup/。最初开始使用时,由于对网页前端知之甚少,并未感受到Jso...
  • Futureer
  • Futureer
  • 2014年02月22日 15:58
  • 4413

jsoup抓取url下载excle文件

package com.rquest.webSpider; import java.io.File; import java.io.FileOutputStream; import java.io....
  • litter_Strong
  • litter_Strong
  • 2017年03月13日 17:42
  • 865

Jsoup简介——使用Java抓取网页数据

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 jsou...
  • lee_tianya
  • lee_tianya
  • 2014年10月15日 22:36
  • 8729

利用Jsoup爬取网页内容

jsoup的强大之处在这里就不多说,最近在写项目,需要爬取网页上的内容,自然想到的是利用Jsoup来处理,项目中是利用Jsoup爬取学校信息门户的新闻消息,然后放进客户端 网页的html代码如下...
  • system_err
  • system_err
  • 2016年09月06日 17:38
  • 1130

java使用Jsoup连接网站超时的解决方法 链接的时候设定超时时间即可。 doc = Jsoup.connect(url).timeout(5000).get();

java使用Jsoup连接网站超时的解决方法 jsoup是一个非常好的解析网页的包,用java开发的,提供了类似DOM,CSS选择器的方式来查找和提取文档中的内容,提取文档内容时会出...
  • tfy1332
  • tfy1332
  • 2014年03月20日 21:17
  • 15886

jsoup爬取指定网页的url和图片

import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.clie...
  • wangdianyong
  • wangdianyong
  • 2016年03月11日 13:54
  • 1109
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jsoup替换网页中的连接
举报原因:
原因补充:

(最多只允许输入30个字)