如何在java中解析网页的特定部分?

时间:2017-11-06 17:11:35

标签: java string parsing substring html-parsing

我正在抓取一个网页的正文,其中有一个包含很多行的表格,如下所示:

 ...
 ...
 <tbody>
   <tr class="odd">
     <td align="center">08:00</td>
     <td align="center">9.50</td>
     <td>Description of event 1 </td>
     <td align="center">7.80</td>
   </tr>
   <tr class="even">
     <td align="center">09:00</td>
     <td align="center">11.10</td>
     <td>Description of event 2</td>
     <td align="center">27.40</td>
   </tr>
...

我想从这个表中剪切部分并将其解析为我的对象。我试图使用子字符串,但我不知道文本所需的部分在哪里。此外,我正在寻找正则表达式和不同的解析器。我怎样才能决定我的问题?感谢

2 个答案:

答案 0 :(得分:6)

您可以使用jsoup将您的HTML解析为Document并使用Jsoup DOM methods导航您的HTML。

String yourHtml = "<someHtml/>"; 
Document doc = Jsoup.parseBodyFragment(yourHtml);

Element table = doc.getElementByTag("tbody");
Elements rows = table.getElementsByTag("tr");
for (Element row : rows) {
    for (Element cell : row.getElementsByTag("td")) {
        String content = cell.text();
    }
}

答案 1 :(得分:1)

由于它采用XML格式,您应该使用Java XML API,例如DOM或SAX。或者您可以使用第三方XML库(如JDOM和DOM4J)进行处理。

File file = new File(Appl.class.getClassLoader().getResource("testing.xml").getFile());
Document document = DocumentFactory.createDocument(file);
Element element = document.getElementById("tag22");
System.out.println(element.getTextContent());

<强> testing.xml

<?xml version='1.0' encoding='UTF-8'?>
<tag1 id="tag1">
    <tag2 id="tag22">Testing Content</tag2>
</tag1>