`
hylxinlang
  • 浏览: 129259 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

简单***的实现,利用js解析把web网页转换成自己的网页,加快开发

阅读更多

利用开源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();

 

 

 

  • 大小: 6.7 KB
0
2
分享到:
评论
2 楼 hylxinlang 2013-08-31  
是,我只是简单实现,还有些细节没研究透。要实现一个真正的页面改造,紧这点是不行的。要转化为完全使用javascript开发。
1 楼 vb2005xu 2013-08-31  
蛋痛的方案选择: 既然都用jsoup了,那还要 rhino 干嘛?而且你这个代码根本就没有体现出rhino 的任何意义啊,

相关推荐

    js利用google翻译接口把网页翻译成各国语言

    利用JavaScript(简称JS)结合Google翻译API可以实现在网页上自动翻译功能,使网站能够轻松地提供多语言版本。这种方法不仅提升了用户体验,还减少了开发多语言版本所需的工作量。 #### 关键知识点详解 ### 1. ...

    JS实现自定义模板树解析

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它在浏览器端运行,为用户提供动态交互体验。在本文中,我们将深入探讨如何使用JavaScript来实现自定义模板树解析,这是一项核心技能,对于构建复杂的前端...

    利用mui框架和pdf.js插件实现pdf文件解析与查看

    "利用mui框架和pdf.js插件实现pdf文件解析与查看"的主题旨在介绍如何在混合应用程序中集成这两个工具,以提供流畅的PDF阅读体验。 首先,我们需要了解**mui框架**。Mui是一个轻量级的前端框架,专为移动端H5页面...

    通过Js实现Html转换成Word下载

    本文将详细介绍如何利用JavaScript实现这一功能,并结合提供的压缩包文件,解析其核心技术和步骤。 首先,我们需要了解HTML与Word之间的转换原理。HTML是一种标记语言,用于构建和展示网页内容,而Word是Microsoft ...

    一个非常好的js解析xml生成一个tree

    综上所述,这个项目的核心技术在于使用JavaScript解析XML,并以交互式树形结构展示数据。开发者通过编写JavaScript代码实现了XML到DOM的转换,然后将DOM树转换为HTML结构,最后通过CSS进行美化。这样的工具对于需要...

    android webserver简单网页服务器

    在Android平台上实现一个简单的网页服务器是一项有趣的挑战,它允许设备作为一个小型Web服务器运行,从而能够提供本地内容或者进行一些测试。这个项目的核心是利用Android系统的网络功能来搭建一个微型HTTP服务器,...

    web中把视图列解析成html

    根据提供的信息,“web中把视图列解析成html”这一主题涉及的是如何在Web应用中将数据(通常是从数据库获取)转换为HTML格式的过程。下面将详细探讨这一过程中的关键技术点、实现方式以及相关的最佳实践。 ### 一、...

    Web前端模块化开发教程(ES6+Node.js+Webpack)_源代码.zip

    本教程主要围绕Web前端的模块化开发展开,利用ES6的语法特性、Node.js环境以及Webpack工具进行深入探讨。在现代Web开发中,模块化已经成为不可或缺的一部分,它有助于提高代码的可读性、可维护性和复用性。下面将...

    最新canvg.js 将SVG转换成Png(1.4)

    "最新canvg.js 将SVG转换成Png(1.4)" 这个标题提到了一个JavaScript库——canvg.js,它的版本是1.4,主要用于将SVG(可缩放矢量图形)图像转换为PNG(位图)格式。这个功能在网页设计和开发中非常有用,因为SVG是...

    浅析js实现网页截图的两种方式

    【网页截图技术浅析:JS实现的两种方法】 在Web开发中,虽然网页截图并不是一个常见的需求,但当需要时,它能发挥重要的作用。本文将深入探讨两种使用JavaScript实现网页截图的技术:Canvas和SVG。 ### 1. Canvas...

    js解析多种写法的lrc歌词

    JavaScript(简称JS)是一种广泛用于Web开发的轻量级脚本语言,它在浏览器环境中运行,为网页添加交互性。LRC(Lyric)是一种歌词文件格式,常用于存储带有时间戳的歌词,使得音乐播放时能同步显示歌词。本文将深入...

    WebToJPG 抓取网页转化成JPG图片

    【WebToJPG 抓取网页转化成JPG图片】技术是将网页内容转化为静态图像的一种方法,这对于创建网站预览、保存网页快照或在无法直接访问网页时查看页面内容非常有用。ASP.NET,微软的Web应用程序开发框架,提供了实现这...

    JavaScript动态网页开发详解(全部源代码)

    本资源“JavaScript动态网页开发详解(全部源代码)”包含了完整的21章内容,旨在深入解析JavaScript在动态网页开发中的应用。 1. **基础篇** - **变量与数据类型**:JavaScript支持var、let和const三种声明变量的...

    javascript解析二维码插件以及demo

    在IT行业中,尤其是在Web开发领域,二维码已经成为一种广泛使用的数据传输工具。JavaScript作为一种客户端脚本语言,也能够处理二维码的解析工作,无需依赖其他库或框架。本篇将深入探讨如何使用原生JavaScript实现...

    js的XML解析器 可以解析XMl文件和XML字符串

    JavaScript中的XML解析器是用于处理XML数据的关键工具,它允许开发者在浏览器环境中解析XML文档或者XML字符串,从而在Web应用中有效地使用这些数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于...

    three.js解析BIM中间数据JSON(源代码)

    本主题聚焦于如何利用Three.js解析BIM中间数据的JSON格式,以便在Web环境中展示Revit模型。Three.js是一个强大的JavaScript库,它为浏览器提供了创建3D图形的能力,无需用户安装任何插件。 首先,我们要理解JSON...

    emoji表情web端解析

    JavaScript是Web开发中用于实现动态功能的脚本语言。在处理emoji时,JS通常用于解析和转换文本中的emoji代码。例如,我们可以使用正则表达式查找文本中的emoji Unicode字符,然后用对应的图片元素替换,这样可以...

    Java实现web在线预览office文档

    PDF.js可以将PDF内容解析并渲染成高质量的Web图形。 4. **安全性和性能优化** - 文件转换过程中应考虑并发处理,避免大量请求导致服务器压力过大。 - 为提高用户体验,可考虑使用缓存策略,已转换的文件可存储在...

    JS读取解析Excel

    JavaScript(JS)作为前端开发的主要语言,通过特定的技术手段,能够实现对本地Excel文件的读取与解析。本文将深入探讨如何利用JS来读取和解析Excel文件,以及如何进行数据验证,确保上传的数据符合预设的格式要求。...

    一个实现汉字与拼音互转的小巧web工具库

    在这个场景下,我们关注的是一个名为“一个实现汉字与拼音互转的小巧web工具库”的项目,它包含了一个JavaScript库,能够帮助开发者将汉字转换为拼音,反之亦然。这样的工具在处理中文文本、搜索引擎优化(SEO)以及...

Global site tag (gtag.js) - Google Analytics