Java - 不知道如何解析这种HTML

时间:2014-11-13 19:31:33

标签: java regex parsing html-parsing

我正在寻找一种用Java解析这种HTML的方法。

<tr class="cBackHeader backCat" ...>
   <th class="padding" ...>
       ...
       <a href="{{URL CATEGORY}}" class="cHeader">{{TITLE CATEGORY}}</a>
   </th>
</tr>
(<tr class="sujet..." ...>
   ...
   <td ... class="subjectCase3" ...>
        <a href="{{URL TOPIC}}" class="cCatTopic" title="{{ID TOPIC}}">{{TITLE TOPIC}}</a>
   </td>
   ...
</tr>)+

我想在{{}}之间得到每个变量的良好顺序。 我设法用这种模式获得了第一部分:

<th class=\"padding\".*?>.*?<a href=\"(.+?)\" class=\"cHeader\">(.+?)</a></th>

但我不知道如何处理第二部分(可能是很多td.subjectCase3)。

编辑:这是我使用Jsoup的解决方案,但这不如使用Pattern和Matcher优化。

 Document document = Jsoup.parse(response);
 Element tmp;
 Elements elements = document.select("tr.cBackHeader,tr.sujet");
 for (Element el : elements) {
   if (el.hasClass("cBackHeader")) {
     tmp = el.select("a.cHeader").first();
     result.add(new TopicItem(null, tmp.ownText()));
   } else if (el.hasClass("sujet")) {
     tmp = el.select("td.sujetCase3 a").first();
     result.add(new TopicItem(new Topic(tmp.attr("title"), tmp.attr("href"), tmp.ownText()), null));
   }
 }

您怎么看?

1 个答案:

答案 0 :(得分:-1)

我会使用正则表达式:

(href="{{).+?[}]

总会拉出来:   href =“{{URL TOPIC}

然后在Java中我将使用String.split()方法。

String string = "href="{{URL TOPIC}";
String[] parts = string.split("{");
String part1 = parts[0]; // href="
String part2 = parts[1]; // ""
String part3 = parts[2]; // URL TOPIC}

从那里我会修剪尾随的“}”;

return part3.trim("}");

它不漂亮,但它会得到结果。