减少创建JDOM对象的开销

时间:2014-07-28 16:08:19

标签: java xpath web-crawler jdom

我正在开发一个大规模评估网页(数百万)的项目。与典型的Web爬网程序不同,我的评估程序需要为其评估的每个页面构建一个JDOM对象,以便对其运行XPath个查询。

我们当前的实现使用SAXBuilder来实例化JDOM对象(其中一些然后被缓存以备将来使用)以便查询XPath。但是简单的分析显示实例化过程实际上消耗的时间最多,远远超过查询XPath,因此我不得不寻找替代解决方案。有没有办法减少这种开销,例如:

  1. 创造"精益" JDOM对象只有最少的页面结构信息?
  2. 在没有实际JDOM对象的情况下评估XPath?
  3. 通过重复使用对象来快速初始化JDOM对象"类似"网页?
  4. 编辑: 我们正在使用JDOM 2.X.

    我们初始化JDOM对象的方式示例:

    public static List<Element> evaluateHTML(File html, String pattern) throws JDOMException, IOException {
        Element page = saxBuilder.build(html).getRootElement();
        XPathBuilder xpath = new XPathBuilder(pattern, Filters.element());
        //...set xpath namespaces...
        XPathExpression expr = xpath.compileWith(xpathFactory);
        return expr.evaluate(page);
    }
    

    其中xpathFactory是静态成员,并且我们为每个评估的html文件调用evaluateHTML

0 个答案:

没有答案