`

关于网页快照的处理方式

阅读更多

最近在用Heritriex+Lucene做搜索引擎的项目,中间有一个功能要实现类似于百度和谷歌中"网页快照"的功能;

秀一下我自己的做法吧!

(1):页面中的处理很简单;

var url = "webSnap?url="+url+"&fresh="+Math.random();//我这个是提交给了servlet了。

window.open(url);

(2):servlet的处理方式:

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setCharacterEncoding("UTF-8");
  response.setContentType("text/html");
  //得到页面传递过来的url
  String urlAddress = JspUtils.getParameter(request, "url", "");
  //把提交过来的网页地址直接定位到本地抓取磁盘中对应的页面

  String conLocalAddress = getLocalAddress(urlAddress);

  //获取本地抓取的页面中的编码方式

  String charset = BaeeqUtil.getCharset(new File(conLocalAddress));

  response.setContentType("text/html;charset="+charset+""); 

  //通过字符流的形式读文件 
  String localStr = FileRead(conLocalAddress);
  PrintWriter out = response.getWriter();

  //直接响应输出
  out.write(localStr);
 }

 

 

  /**
  * 读磁盘中某个文件

  * @param fname
  * @return String
  */

 public String FileRead(String fname) {
  String content = new String();
  try {
   FileReader fr = new FileReader(fname);
   BufferedReader br = new BufferedReader(fr);
   String str = new String();
   while((str = br.readLine()) != null) {
    content +=str;
   }
   br.close();
   fr.close();
   } catch(FileNotFoundException e) {
    System.out.println("Connt find " + e);
   } catch(IOException e) {
    System.out.println("Error reading input file" + e);
   }
   return content;
 }

 

 

  /**
  * 获得字符编码
  * @param htmlFile
  * @return
  */
 public static String getCharset(File htmlFile){
  String str = loadFileToString(htmlFile);
  String regex = "charset=(\\w+\\d?)";
  Pattern pattern = Pattern.compile(regex);//编译正则
  Matcher matcher = pattern.matcher(str);//产生正则匹配对象。
  if(matcher.find()){
   String s = matcher.group(1);
   System.out.println(s);
   return s;
  }
  return "UTF8";
 }

 

 

 /***
  * 得到本地磁盘上的mirror的地址
  * @param printStr
  * @return
  */
 public String getLocalAddress(String printStr) {
  return BaeeqUtil.switchUrl2Path(printStr, txtMirrorPath);
 }

 

 

  /**
  * 测试方法
  * @param args
  * @return void
  */

 public static void main(String[]args) {
  String demo = "http://bbs.club.sina.com.cn/tableforum/App/index.php?tree=0&bbsid=272&subid=0";
  System.out.println(BaeeqUtil.switchUrl2Path(demo, "e:\\"));
 }

 

用这个方法做的网页快照。不知道大家还有其他的什么好的办法了没。欢迎指点……………………

分享到:
评论

相关推荐

    压缩图,网页快照

    "imgMode"这个文件名可能指的是与图像模式或处理方式相关,可能是在网页快照中用于调整或优化图片显示的设置。例如,它可能是一个配置文件,用于决定如何压缩或展示网页快照中的图像,或者是一个工具,允许用户选择...

    java 实现整张网页快照

    在Java编程环境中,生成网页快照是一项常见的需求,主要用于数据抓取、网页存档或测试自动化等场景。这里我们关注的焦点是如何利用Java实现整张网页的快照功能。通过标题"java 实现整张网页快照"和描述,我们可以...

    c#网页快照生成HtmlToImage.rar

    总的来说,这个项目提供了一个C#环境下的网页快照生成工具,能够有效地处理网页内容,尤其是涉及JavaScript的页面,并解决了截图过程中可能出现的白屏问题,对于开发者进行网页抓取、数据分析或者构建网页历史记录...

    网页快照工具软件MetaProducts Inquiry

    【网页快照工具软件MetaProducts Inquiry】是一款专为用户设计的高效、实用的网页保存与管理工具。它允许用户在浏览网页时,便捷地将重要信息保存至本地,以便在离线状态下也能回顾和查阅。这款软件对于研究、学习、...

    C#网页截图(不打开网页) 两种方式实现网页快照

    在C#编程环境下,我们可以利用不同的技术来实现网页快照的功能,而无需实际打开浏览器。本篇文章将深入探讨两种实现方法。 1. **使用WebClient类与HTML Agility Pack** C#中的`System.Net.WebClient`类可以用来...

    网页快照实现(C)

    在C语言中实现网页快照的功能,涉及到网络编程、字符串处理和文件操作等多个知识点。 1. **网络编程**:首先,需要了解TCP/IP协议栈,以便于通过HTTP协议与Web服务器通信。C语言中可以使用libcurl库来处理HTTP请求...

    delphi网页快照

    通过理解WebBrowser组件的工作原理,结合位图处理,我们可以构建一个强大的网页快照工具,不仅能够捕获单一网页的快照,还能处理包含多框架的复杂网页。这个项目对于学习Delphi的网络编程和图形界面设计具有很高的...

    c# 网页快照(winform)

    总的来说,实现"C# 网页快照(WinForm)"涉及到的知识点包括:C#基础,HTTP请求,HTML解析(如HtmlAgilityPack),WinForms控件(如`WebBrowser`),图像处理(System.Drawing命名空间),以及可能的JavaScript执行和...

    网页快照捕捉工具的源代码VB·NET2005v1·0

    4. **图像处理**:为了保存网页快照为图像,我们需要掌握Bitmap对象的使用,包括创建、绘制、保存等操作。同时,可能还需要处理缩放、裁剪等图像处理问题,确保快照的质量。 5. **多线程处理**:如果要批量捕捉网页...

    C#,Asp.Net 生成网页快照

    总的来说,C#和Asp.Net结合可以实现高效且灵活的网页快照生成解决方案。通过理解HTML解析、无头浏览器技术和图像处理,开发者可以利用这个开源项目作为起点,根据具体需求进行定制和扩展,为自己的Web应用程序添加更...

    snap.zip网页快照功能代码

    (一)PhantomJS是可使用JavaScript编写脚本的无头Web浏览器。它可以在Windows,macOS,Linux...(三)本例子中,提供了屏幕截图功能的使用,可以实现网页快照的功能,输入一个网址,可以获取到该网址的快照截图功能。

    PHP网页快照程序

    在IT行业中,网页快照是一种非常实用的技术,它允许用户查看网页在某个时间点的状态,即使该网页后来被修改或删除。PHP作为一种流行的服务器端脚本语言,常常被用来开发各种实用工具,其中之一就是网页快照程序。这...

    ASP.NET实现网页快照(C#生成网页截图 将指定html网页转换成图片保存到本地)(源代码)

    总之,使用ASP.NET和C#实现网页快照功能需要理解WebBrowser控件的工作原理,掌握HTML页面的加载机制,并熟悉图像处理和文件I/O的相关知识。这个过程涉及到的技术点广泛,包括Web开发、图形处理、多线程编程以及文件...

    网页照相机·网页快照器(目前网上唯一可用一款)

    网页照相机与网页快照器是一款独特且实用的工具,专为用户解决在互联网上遇到的网页内容无法复制或保存的问题。它能够将整个网页转化为高清图片,使得用户可以保存和分享网页内容,而不受网站防拷贝技术的限制。这款...

    JAVA线程根据给定URL生成网页快照

    在Java编程中,生成网页快照是一项常见的任务,它主要用于数据抓取、搜索引擎优化(SEO)或者是为了离线浏览。这个任务通常涉及到网络编程、多线程和网页解析技术。以下将详细介绍如何根据给定的URL利用Java实现线程...

    将网页内容保存为图片(网页快照) vc设计

    总结来说,制作网页快照的VC程序涉及到网页加载、渲染、截图和保存等多个技术点,需要对网络编程、浏览器引擎以及图形处理有一定的了解。通过这样的项目,开发者可以提升自己的跨领域技能,同时也能为实际工作中的...

    易语言网页快照源码.rar

    总结来说,易语言网页快照源码提供了一个直观的学习平台,让开发者有机会深入理解网页快照的实现机制,以及易语言在处理网络请求和文件操作方面的功能。通过实践这个项目,不仅可以提升编程技能,也能为其他更复杂的...

    nutch解决搜索结果高亮和网页快照链接无效及网页变形

    2. **快照链接无效**:Nutch 在抓取网页时会创建网页快照,方便用户查看网页的历史状态。如果快照链接失效,可能是由于URL重定向、网页结构改变或存储问题导致。为了解决这个问题,可以: - 检查 Nutch 的抓取日志...

    强大的网页快照软件免费WebShot

    WebShot是一款功能强大的网页快照软件,它允许用户轻松地为网页创建静态图像或截图,并提供了丰富的自定义选项。在互联网上,网页快照是非常有用的工具,它可以帮助用户保存网页内容,防止因网页变动或链接失效而...

Global site tag (gtag.js) - Google Analytics