- 浏览: 38574 次
- 性别:
- 来自: 北京
文章分类
最新评论
一、根据url请求返回状态码
二、根据请求获取html代码,并分为js,css,html三部分
三、将html代码转为dom对象,并做相应的处理
四、抓取网页内容
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常用的工具类
2015-03-24 11:01 427附件中是常用的编码工具类 -
java本地下载上传图片
2015-01-23 13:58 872一、本地的一个下载url ... -
java properties文件读取
2014-10-17 15:35 452一、今天需要在properties文件中读取值 文件如下:de ... -
java拼写json串格式
2014-09-01 11:46 1151一、java后台拼写json串格式 "{\" ... -
java代码中读写xml文件、读excel文件
2014-07-15 16:33 825dom4j读写xml文件:参考地址:http://www.cn ... -
java中文转换成拼音
2014-07-02 09:14 595一、中文转换成拼音的类 public class Trans ... -
java中匹配一个字符串是否在数组中
2014-06-27 17:00 949一、检查字符串 是否 存在 数组中 引入apache的: im ... -
java中获取IP地址
2014-06-23 17:03 713一、java中获取ip地址 public static St ... -
java分页类
2014-06-08 20:30 521package Servlet; import java. ... -
java代码中文件下载
2014-04-17 17:09 422一、文件下载 @RequestMapping(value=& ... -
java装箱与拆箱
2014-02-17 21:20 490转载自:http://www.cnblogs.com/dann ... -
Log4j的用法
2014-01-09 14:07 715转自:http://www.blogjava.net/kit- ... -
Eclipse中debug Can't connect VM
2013-11-25 17:27 1008我用的是Eclipse,win7系统,run 项目正常,但是d ... -
js、java乱码、编码问题
2013-11-19 16:04 483一、java代码中的乱码问题: testString=&qu ... -
java中处理日志读文件的java代码
2013-07-10 13:49 1075一、处理日志读取文件、过滤文件 package com.bhu ...
相关推荐
在Java中,进行网络通信主要通过`java.net`包提供的类,如`URL`、`URLConnection`和`Socket`等。`URL`(统一资源定位符)对象表示网络资源的位置,而`URLConnection`则是连接这些资源的桥梁。 2. **创建URL对象**...
发送XML报文通常涉及到POST或GET请求,这里以POST请求为例,因为POST更适合发送大量数据,如XML文档。 1. **创建XML文档** 在发送XML之前,我们需要先构建XML文档。可以使用DOM(Document Object Model)或者SAX...
在Java编程语言中,读取HTML文档主要涉及网络请求、HTML解析和DOM操作等技术。以下将详细讲解如何实现这一过程。 首先,我们需要获取HTML文档的内容。这通常通过HTTP请求来完成,Java提供了多种库来处理HTTP请求,...
在IT行业中,将网页内容转化为图片是一项常见的需求,例如用于屏幕截图、网页存档或社交媒体预览等场景。本教程将详细介绍如何通过URL地址获取网页并生成jpg图片,同时解决32位和64位运行环境下的兼容性问题。我们将...
Java作为一种广泛使用的编程语言,提供了处理WSDL文档的能力,帮助开发者获取服务中的方法和参数信息。本篇将深入探讨如何在Java中解析WSDL文档并提取关键细节。 首先,理解WSDL文档的结构至关重要。WSDL文档包含了...
在Java编程中,`java.net.URL`类是用于表示统一资源定位符(Uniform Resource Locator)的核心类,它是我们从互联网上获取资源的重要工具。当我们想要从网页抓取数据或者进行网络通信时,`URL`类扮演了关键角色。本...
在Java编程语言中,获取网页信息是常见的任务,特别是在网络爬虫、数据分析或者网页抓取等应用场景中。这里我们将详细探讨两种主要的方法:使用`java.net`包中的类和使用第三方库如`Jsoup`。 **一、使用`java.net....
Java中的`java.net.URL`类可以帮助我们构建和解析URL,而`java.net.HttpURLConnection`则可以用来发送HTTP请求。此外,`java.io`包下的输入输出流类用于处理服务器返回的数据。 接着,解析网页内容是抓取URL和Email...
1. **发送HTTP请求**:使用Java的HttpURLConnection或第三方库如Apache HttpClient、OkHttp等,向目标URL发送GET请求,获取网页的HTML内容。 2. **解析HTML内容**:获取到HTML后,我们需要解析其中的图片标签`<img>...
在Java中,我们通常使用HttpURLConnection或Apache HttpClient库来发送HTTP请求获取网页内容。例如,以下是一个简单的HttpURLConnection示例,用于获取网页的HTML源码: ```java import java.io.BufferedReader; ...
本主题将深入探讨如何使用Java解析HTTP请求处理结果,包括发送GET和POST请求、处理响应、解析网页内容以及应对常见问题。 首先,Java中的HttpURLConnection是标准库中用于执行HTTP请求的核心类。我们可以使用它来...
XML文档由元素、属性、文本内容等组成,这些元素通过嵌套形成树形结构。JDOM提供了SAXBuilder和DOMBuilder两种方式来解析XML文档,其中SAXBuilder适用于大文件,因为它基于事件驱动,不会一次性加载整个文档到内存;...
这个例子展示了如何使用Java的基础功能来获取和显示URL中的HTML内容。然而,要构建一个完整的简易浏览器,还需要处理更多细节,如页面导航、JavaScript支持、CSS解析等,这通常需要引入额外的库或使用更复杂的架构。
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。 jsoup 可以从包括字符串、URL 地址...
在本项目中,jQuery的核心功能——AJAX(Asynchronous JavaScript and XML)被用来发送异步请求到服务器,获取或更新数据,而无需刷新整个页面。AJAX的主要优势在于提高用户体验,因为用户可以继续在页面上进行其他...
在Java中,可以使用`java.net.URL`类、`HttpURLConnection`类或者第三方库如Apache HttpClient、OkHttp来发起HTTP请求,获取远程服务器的数据。HTTPS在HTTP的基础上添加了SSL/TLS加密,保证了数据传输的安全性。 4....
在爬虫中,我们通常发送GET请求到目标网站的URL,以获取HTML页面内容。 1. **导入必要的库** 要在Java中执行HTTP GET请求,我们需要引入Apache HttpClient库或者使用Java内置的HttpURLConnection。这里以...
在IT行业中,网络通信是核心部分之一,而利用URL向服务器发送数据并接收响应是常见的操作。本主题聚焦于如何通过URL将XML数据发送到Java应用程序,并解析返回的数据。主要涉及的技术点包括URL、OutputStreamWriter...
Java Web网站抓取其他网站内容是一项常见的技术需求,主要用于数据挖掘、信息聚合或者自动化测试等场景。本篇文章将深入探讨如何使用Java在Web环境中抓取其他网站的数据。 首先,我们需要了解的是网页抓取的基本...
以OkHttp为例,我们可以创建一个OkHttpClient实例,然后构建一个Request对象,设置目标URL,最后通过client.newCall(request).execute()方法发送请求并获取响应。 ```java OkHttpClient client = new OkHttpClient...