`

Java中发送url请求,获取html内容,dom对象等

    博客分类:
  • java
阅读更多
一、根据url请求返回状态码
private static int getResultHttpUrl(String url){
		 int responseCode=0;//状态码
	    try {  
            URL u = new URL(url);  
            try {  
                HttpURLConnection uConnection = (HttpURLConnection) u.openConnection();  
                try {  
                    uConnection.connect();  
                    responseCode =  uConnection.getResponseCode();//获取状态码
                } catch (Exception e) {  
                    //System.out.println("connect failed");  
                }  
                  
            } catch (IOException e) {  
                //System.out.println("build failed");  
            }  
              
        } catch (MalformedURLException e) {  
            //System.out.println("build url failed");  
        }  
	    return responseCode;
	}

二、根据请求获取html代码,并分为js,css,html三部分
private  TemplateVO getTemplateValue(HttpServletRequest request,
			String templatePath,String templateId) throws Exception {
		TemplateVO template = new TemplateVO();
		String filePath = request.getSession().getServletContext()
				.getRealPath("/")
				+ templatePath;
		String html = URLUtil.getValue(filePath);
		if ("".equals(html)) {
			return template;
		}
		memcacheDao.set(TEMPLATE_CACHE_KEY+templateId,html);
		Document doc = DocumentUtils.getHtmlDoc(html);
		//获取的dom对象放入缓存
		String cssPath = doc.getElementsByTag("link").get(0).attr("href")
				.replace("../../../", "/templateCenter/");
		doc.getElementsByTag("a").removeAttr("href");
		Elements csss = doc.getElementsByTag("link");
		for (Element css : csss) {
			template.getCsss().add(pathReplace(templatePath, css.attr("href")));
		}
		template.setCssPath(cssPath);
		String body = pathReplace(templatePath, doc.body().html());// doc.body().html().replace("../../",
																	// "/templateCenter/");
		body = body.replaceAll("(\r\n|\r|\n|\n\r)", "");
		body = body.replaceAll("<!--.*?-->", "");
		body = body.replaceAll("\\s{2,10}|\t|\r|\n", " ");
		body = body.replaceAll("<\\s*(script).*?>.*?</\\1>", "");
		template.setBody(body);
		return template;
	}


三、将html代码转为dom对象,并做相应的处理
/**
	* @Title: getHtmlDoc
	* @Description: html转换成dom对象
	* @param html
	* @return
	 */
	private  Document getHtmlDoc(String html) {
		long start = System.currentTimeMillis();
		Document doc = null;
		try {
			doc = (Document) Jsoup.parse(html);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			LogMgr.writeSysInfoLog("Time is:"+ (System.currentTimeMillis() - start) + "ms");
		}
		return doc;
	}


四、抓取网页内容
/**
	 * Description: 获得网页抓取后的内容
	 * @param htmlUrl 抓取的URL地址
	 * @param htmlCode 网页显示的编码
	 * @return
	 */
	public static String getUrlToHtml(String htmlUrl, String htmlCode) {
		try {
			StringBuilder contentBuf = null;
			BufferedReader bufReader = null;
			try {
				URL url = new URL(htmlUrl);
				HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
				InputStreamReader input = new InputStreamReader(httpConn.getInputStream(), htmlCode);
				bufReader = new BufferedReader(input);
				String line = "";
				contentBuf = new StringBuilder();
				while ((line = bufReader.readLine()) != null) {
					String lineJudge = "<";
					Pattern patternJudge = Pattern.compile(lineJudge);
					Matcher matcherJudge = patternJudge.matcher(line.toString());
					if(matcherJudge.find()){
						contentBuf.append(line);
					}else if(isMessyCode(line)==false){
						contentBuf.append(line);
					}
				}
				return contentBuf.toString();
			} catch (MalformedURLException e) {
				return null;
			} catch (Exception e) {
				return null;
			} finally {
				if (bufReader != null) {
					try {
						bufReader.close();
					} catch (IOException e) {
						return null;
					}
				}
			}
		} catch (Exception e) {
			return null;
		}
	}
	
	/**
     * 判断字符串是否是乱码
     * @param strName 字符串
     * @return 是否是乱码
     */
    public static boolean isMessyCode(String strName) {
        Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");
        Matcher m = p.matcher(strName);
        String after = m.replaceAll("");
        String temp = after.replaceAll("\\p{P}", "");
        char[] ch = temp.trim().toCharArray();
        float chLength = ch.length;
        float count = 0;
        for (int i = 0; i < ch.length; i++) {
            char c = ch[i];
            if (!Character.isLetterOrDigit(c)) {
                if (!isChinese(c)) {
                    count = count + 1;
                }
            }
        }
        float result = count / chLength;
        if (result > 0.4) {
            return true;
        } else {
            return false;
        }

    }
    
    

	/**
     * 判断字符是否是中文
     * @param c 字符
     * @return 是否是中文
     */
    public static boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
            return true;
        }
        return false;
    }
分享到:
评论

相关推荐

    Java源代码根据URL获取因特网网页源文件.rar

    在Java中,进行网络通信主要通过`java.net`包提供的类,如`URL`、`URLConnection`和`Socket`等。`URL`(统一资源定位符)对象表示网络资源的位置,而`URLConnection`则是连接这些资源的桥梁。 2. **创建URL对象**...

    java http 发送xml报文(java发送xml报文实例+参数)

    发送XML报文通常涉及到POST或GET请求,这里以POST请求为例,因为POST更适合发送大量数据,如XML文档。 1. **创建XML文档** 在发送XML之前,我们需要先构建XML文档。可以使用DOM(Document Object Model)或者SAX...

    JAVA实现HTML文档读取

    在Java编程语言中,读取HTML文档主要涉及网络请求、HTML解析和DOM操作等技术。以下将详细讲解如何实现这一过程。 首先,我们需要获取HTML文档的内容。这通常通过HTTP请求来完成,Java提供了多种库来处理HTTP请求,...

    通过URL地址获取网页生成jpg图片

    在IT行业中,将网页内容转化为图片是一项常见的需求,例如用于屏幕截图、网页存档或社交媒体预览等场景。本教程将详细介绍如何通过URL地址获取网页并生成jpg图片,同时解决32位和64位运行环境下的兼容性问题。我们将...

    Java解析wsdl文档获取具体的方法与参数

    Java作为一种广泛使用的编程语言,提供了处理WSDL文档的能力,帮助开发者获取服务中的方法和参数信息。本篇将深入探讨如何在Java中解析WSDL文档并提取关键细节。 首先,理解WSDL文档的结构至关重要。WSDL文档包含了...

    java url类获取网站源码

    在Java编程中,`java.net.URL`类是用于表示统一资源定位符(Uniform Resource Locator)的核心类,它是我们从互联网上获取资源的重要工具。当我们想要从网页抓取数据或者进行网络通信时,`URL`类扮演了关键角色。本...

    java 获取页面信息

    在Java编程语言中,获取网页信息是常见的任务,特别是在网络爬虫、数据分析或者网页抓取等应用场景中。这里我们将详细探讨两种主要的方法:使用`java.net`包中的类和使用第三方库如`Jsoup`。 **一、使用`java.net....

    Java抓取URL/Email实例源码

    Java中的`java.net.URL`类可以帮助我们构建和解析URL,而`java.net.HttpURLConnection`则可以用来发送HTTP请求。此外,`java.io`包下的输入输出流类用于处理服务器返回的数据。 接着,解析网页内容是抓取URL和Email...

    爬虫+URL获取Img高宽

    1. **发送HTTP请求**:使用Java的HttpURLConnection或第三方库如Apache HttpClient、OkHttp等,向目标URL发送GET请求,获取网页的HTML内容。 2. **解析HTML内容**:获取到HTML后,我们需要解析其中的图片标签`&lt;img&gt;...

    java获取网页主信息之五:测试

    在Java中,我们通常使用HttpURLConnection或Apache HttpClient库来发送HTTP请求获取网页内容。例如,以下是一个简单的HttpURLConnection示例,用于获取网页的HTML源码: ```java import java.io.BufferedReader; ...

    Java 解析http请求处理结果

    本主题将深入探讨如何使用Java解析HTTP请求处理结果,包括发送GET和POST请求、处理响应、解析网页内容以及应对常见问题。 首先,Java中的HttpURLConnection是标准库中用于执行HTTP请求的核心类。我们可以使用它来...

    jdom解析xml java发送post请求

    XML文档由元素、属性、文本内容等组成,这些元素通过嵌套形成树形结构。JDOM提供了SAXBuilder和DOMBuilder两种方式来解析XML文档,其中SAXBuilder适用于大文件,因为它基于事件驱动,不会一次性加载整个文档到内存;...

    编程实现显示URL中的Html文件

    这个例子展示了如何使用Java的基础功能来获取和显示URL中的HTML内容。然而,要构建一个完整的简易浏览器,还需要处理更多细节,如页面导航、JavaScript支持、CSS解析等,这通常需要引入额外的库或使用更复杂的架构。

    使用java-jsoup解析html页面内容,爬取想要的信息(如号段)

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。 jsoup 可以从包括字符串、URL 地址...

    Java通过jQuery实现ajax异步请求

    在本项目中,jQuery的核心功能——AJAX(Asynchronous JavaScript and XML)被用来发送异步请求到服务器,获取或更新数据,而无需刷新整个页面。AJAX的主要优势在于提高用户体验,因为用户可以继续在页面上进行其他...

    java远程获取数据_java工程

    在Java中,可以使用`java.net.URL`类、`HttpURLConnection`类或者第三方库如Apache HttpClient、OkHttp来发起HTTP请求,获取远程服务器的数据。HTTPS在HTTP的基础上添加了SSL/TLS加密,保证了数据传输的安全性。 4....

    使用java通过Get请求进行爬虫操作

    在爬虫中,我们通常发送GET请求到目标网站的URL,以获取HTML页面内容。 1. **导入必要的库** 要在Java中执行HTTP GET请求,我们需要引入Apache HttpClient库或者使用Java内置的HttpURLConnection。这里以...

    url发送数据到JAVA,显示返回的数据

    在IT行业中,网络通信是核心部分之一,而利用URL向服务器发送数据并接收响应是常见的操作。本主题聚焦于如何通过URL将XML数据发送到Java应用程序,并解析返回的数据。主要涉及的技术点包括URL、OutputStreamWriter...

    java web网站常用抓取其他网站内容

    Java Web网站抓取其他网站内容是一项常见的技术需求,主要用于数据挖掘、信息聚合或者自动化测试等场景。本篇文章将深入探讨如何使用Java在Web环境中抓取其他网站的数据。 首先,我们需要了解的是网页抓取的基本...

    android获取网页内容

    以OkHttp为例,我们可以创建一个OkHttpClient实例,然后构建一个Request对象,设置目标URL,最后通过client.newCall(request).execute()方法发送请求并获取响应。 ```java OkHttpClient client = new OkHttpClient...

Global site tag (gtag.js) - Google Analytics