【问题标题】:How to parse a specific part of web-page in java?如何在java中解析网页的特定部分?
【发布时间】:2018-04-18 22:18:59
【问题描述】:

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

 ...
 ...
 <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>
...

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

【问题讨论】:

  • 你试过什么?另外,当你说“剪线”时,你的意思是String#split吗?
  • 您应该使用 html 解析器。看看jsoup.org

标签: java string parsing substring html-parsing


【解决方案1】:

您可以使用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();
    }
}

【讨论】:

  • 获取行时,content 变量在哪里定义?这应该是table吗?
  • @byxor 哎呀,这就是你在 stackoverflow 页面上编码而不是真正的 IDE 时发生的事情
【解决方案2】:

因为它是 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>

【讨论】:

    猜你喜欢
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    相关资源
    最近更新 更多