【问题标题】:Extract data between two specific text using Jericho使用 Jericho 在两个特定文本之间提取数据
【发布时间】:2013-04-16 10:33:32
【问题描述】:
我正在使用 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 提取 Item 7. 和 Item 8. 之间的数据。
提前致谢
【问题讨论】:
标签:
java
html-parsing
jericho-html-parser
【解决方案1】:
在我的例子中,'Item 7' 和 'Item 8' 出现在'bold' 中,然后是
我迭代了元素列表。我的代码
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);
}
}