利用开源js引擎rhino+jsoup进行web裁制,使用javascript来解析页面。
JsEngin.java
package cn.tailor.engin; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import org.jsoup.Jsoup; import org.mozilla.javascript.Context; import org.mozilla.javascript.ScriptableObject; import org.mozilla.javascript.commonjs.module.provider.SoftCachingModuleScriptProvider; public class JsEngin { public static String exedom(){ ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); try { engine.put("oText", Fetch.getHtml("http://www.baidu.com")); FileReader reader = new FileReader("D://js/yourFile.js"); engine.eval(reader); reader.close(); String name = (String) engine.get("output"); return name; } catch (Exception e) { e.printStackTrace(); return null; } } public static String exe(){ Context localContext = Context.enter(); ScriptableObject localScriptableObject = localContext.initStandardObjects(); Object Jsoup = Context.javaToJS(Jsoup.class, localScriptableObject); ScriptableObject.putProperty(localScriptableObject, "jsoup", Jsoup); ScriptableObject.putProperty(localScriptableObject, "dom", Fetch.getHtml("http://www.baidu.com")); FileReader reader; try { reader = new FileReader("D://js/yourFile.js"); localContext.evaluateReader(localScriptableObject, reader, reader.toString(), 1, null); reader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String html=(String) localScriptableObject.get("output"); return html; } }
TailorService.java
package cn.tailor.service; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.tailor.engin.JsEngin; public class TailorService extends HttpServlet { /** * Constructor of the object. */ public TailorService() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); String html=JsEngin.exe(); out.print(html); out.flush(); out.close(); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the POST method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { } }
Fetch.java
package cn.tailor.engin; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class Fetch { public static Document getHtml(String url){ try { Document dom=Jsoup.connect(url).timeout(6000).get(); return dom; } catch (IOException e) { e.printStackTrace(); return null; } } }
yourfile.js
var output=dom.getElementsByTag("title").get(0).text();
相关推荐
利用JavaScript(简称JS)结合Google翻译API可以实现在网页上自动翻译功能,使网站能够轻松地提供多语言版本。这种方法不仅提升了用户体验,还减少了开发多语言版本所需的工作量。 #### 关键知识点详解 ### 1. ...
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它在浏览器端运行,为用户提供动态交互体验。在本文中,我们将深入探讨如何使用JavaScript来实现自定义模板树解析,这是一项核心技能,对于构建复杂的前端...
"利用mui框架和pdf.js插件实现pdf文件解析与查看"的主题旨在介绍如何在混合应用程序中集成这两个工具,以提供流畅的PDF阅读体验。 首先,我们需要了解**mui框架**。Mui是一个轻量级的前端框架,专为移动端H5页面...
本文将详细介绍如何利用JavaScript实现这一功能,并结合提供的压缩包文件,解析其核心技术和步骤。 首先,我们需要了解HTML与Word之间的转换原理。HTML是一种标记语言,用于构建和展示网页内容,而Word是Microsoft ...
综上所述,这个项目的核心技术在于使用JavaScript解析XML,并以交互式树形结构展示数据。开发者通过编写JavaScript代码实现了XML到DOM的转换,然后将DOM树转换为HTML结构,最后通过CSS进行美化。这样的工具对于需要...
在Android平台上实现一个简单的网页服务器是一项有趣的挑战,它允许设备作为一个小型Web服务器运行,从而能够提供本地内容或者进行一些测试。这个项目的核心是利用Android系统的网络功能来搭建一个微型HTTP服务器,...
根据提供的信息,“web中把视图列解析成html”这一主题涉及的是如何在Web应用中将数据(通常是从数据库获取)转换为HTML格式的过程。下面将详细探讨这一过程中的关键技术点、实现方式以及相关的最佳实践。 ### 一、...
本教程主要围绕Web前端的模块化开发展开,利用ES6的语法特性、Node.js环境以及Webpack工具进行深入探讨。在现代Web开发中,模块化已经成为不可或缺的一部分,它有助于提高代码的可读性、可维护性和复用性。下面将...
"最新canvg.js 将SVG转换成Png(1.4)" 这个标题提到了一个JavaScript库——canvg.js,它的版本是1.4,主要用于将SVG(可缩放矢量图形)图像转换为PNG(位图)格式。这个功能在网页设计和开发中非常有用,因为SVG是...
【网页截图技术浅析:JS实现的两种方法】 在Web开发中,虽然网页截图并不是一个常见的需求,但当需要时,它能发挥重要的作用。本文将深入探讨两种使用JavaScript实现网页截图的技术:Canvas和SVG。 ### 1. Canvas...
JavaScript(简称JS)是一种广泛用于Web开发的轻量级脚本语言,它在浏览器环境中运行,为网页添加交互性。LRC(Lyric)是一种歌词文件格式,常用于存储带有时间戳的歌词,使得音乐播放时能同步显示歌词。本文将深入...
【WebToJPG 抓取网页转化成JPG图片】技术是将网页内容转化为静态图像的一种方法,这对于创建网站预览、保存网页快照或在无法直接访问网页时查看页面内容非常有用。ASP.NET,微软的Web应用程序开发框架,提供了实现这...
本资源“JavaScript动态网页开发详解(全部源代码)”包含了完整的21章内容,旨在深入解析JavaScript在动态网页开发中的应用。 1. **基础篇** - **变量与数据类型**:JavaScript支持var、let和const三种声明变量的...
在IT行业中,尤其是在Web开发领域,二维码已经成为一种广泛使用的数据传输工具。JavaScript作为一种客户端脚本语言,也能够处理二维码的解析工作,无需依赖其他库或框架。本篇将深入探讨如何使用原生JavaScript实现...
JavaScript中的XML解析器是用于处理XML数据的关键工具,它允许开发者在浏览器环境中解析XML文档或者XML字符串,从而在Web应用中有效地使用这些数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于...
本主题聚焦于如何利用Three.js解析BIM中间数据的JSON格式,以便在Web环境中展示Revit模型。Three.js是一个强大的JavaScript库,它为浏览器提供了创建3D图形的能力,无需用户安装任何插件。 首先,我们要理解JSON...
JavaScript是Web开发中用于实现动态功能的脚本语言。在处理emoji时,JS通常用于解析和转换文本中的emoji代码。例如,我们可以使用正则表达式查找文本中的emoji Unicode字符,然后用对应的图片元素替换,这样可以...
PDF.js可以将PDF内容解析并渲染成高质量的Web图形。 4. **安全性和性能优化** - 文件转换过程中应考虑并发处理,避免大量请求导致服务器压力过大。 - 为提高用户体验,可考虑使用缓存策略,已转换的文件可存储在...
JavaScript(JS)作为前端开发的主要语言,通过特定的技术手段,能够实现对本地Excel文件的读取与解析。本文将深入探讨如何利用JS来读取和解析Excel文件,以及如何进行数据验证,确保上传的数据符合预设的格式要求。...
在这个场景下,我们关注的是一个名为“一个实现汉字与拼音互转的小巧web工具库”的项目,它包含了一个JavaScript库,能够帮助开发者将汉字转换为拼音,反之亦然。这样的工具在处理中文文本、搜索引擎优化(SEO)以及...