使用Jericho在两个特定文本之间提取数据

时间:2013-04-23 09:15:35

标签: java html-parsing jericho-html-parser

我正在使用Jericho解析Html。 我有一个html页面,我需要在两个特定文本之间提取数据。

  <table width="100%" align="left">
        <tr><td>
             <b>  Item 7. </b>
        </td></tr>
    </table>
    ...........other data...........
other tags    
<table width="100%" align="left">
        <tr><td>
             <b>  fd ..fds   </b>
        </td></tr>
    </table>

    ...........other data ends...........

    <table width="100%" align="left">
        <tr><td>
             <b>  Item 8. </b>
        </td></tr>
    </table>

如何使用jerchio在第7项第8项之间提取数据。

先谢谢

1 个答案:

答案 0 :(得分:0)

在我的情况下,'项目7'和'项目8'在'粗体'后面看到

我迭代了元素列表。我的代码

for (Element allElement : allElements) {

            if(strtInd==false){
            if((allElement.getStartTag().toString().toLowerCase()).startsWith(("<table").toLowerCase())){

                List<Element> boldElem = allElement.getAllElements(HTMLElementName.B);

                if(null !=boldElem && boldElem.size()>0){
                    Element e1 =  boldElem.get(0);
                    if(null != e1&& (e1.getTextExtractor().toString().toLowerCase()).startsWith(("Item 7.").toLowerCase())){
                        prevElement = allElement;
                        strtInd = true;
                    }
                }

            }
            }else{

                if((allElement.getStartTag().toString().toLowerCase()).startsWith(("<table").toLowerCase())){

                    List<Element> boldElem = allElement.getAllElements(HTMLElementName.B);

                    if(null !=boldElem && boldElem.size()>0){
                        Element e1 =  boldElem.get(0);
                        if(null != e1&& (e1.getTextExtractor().toString().toLowerCase()).startsWith(("Item 8.").toLowerCase())){
                            System.out.println(e1.getTextExtractor().toString());
                            strtInd = false;
                            break;
                        }
                    }

                }
                    sBuff.append(allElement.getFirstElement());
                    prevElement =allElement;
                    System.out.println(allElement);
            }


        }