我不想下载任何其他库,我正在谈论这个:javax.swing.text.html.HTMLEditorKit.Parser
如何使用此解析器提取页面中的重复信息?
举例来说,我在页面中重复了以下代码:
<tr>
<td class="info1">get this info</td>
<td class="info2">get this info</td>
<td class="info3">get this info</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我可以有任何示例代码吗?
提前致谢。
它是一个流解析器,因此在解析时它会告诉您它命中了什么。您应该扩展HTMLEditorKit.ParserCallback一些类(我将其称为Parser),然后重写您关心的方法。
我相信它只适用于“swing 中的 html dtd”(请参见此处)。如果您正在做任何更复杂的事情,建议您使用外部 Java HTML 解析库,例如我之前链接到的库之一。
这是基本代码(演示):
import javax.swing.text.html.parser.*;
import javax.swing.text.html.*;
import javax.swing.text.*;
import java.io.*;
class Parser extends HTMLEditorKit.ParserCallback
{
private boolean inTD = false;
public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
{
if(t.equals(HTML.Tag.TD))
{
inTD = true;
}
}
public void handleEndTag(HTML.Tag t, int pos)
{
if(t.equals(HTML.Tag.TD))
{
inTD = false;
}
}
public void handleText(char[] data, int pos)
{
if(inTD)
{
doSomethingWith(data);
}
}
public void doSomethingWith(char[] data)
{
System.out.println(data);
}
}
class HtmlTester
{
public static void main (String[] args) throws java.lang.Exception
{
ParserDelegator pd = new ParserDelegator();
pd.parse(new BufferedReader(new InputStreamReader(System.in)), new Parser(), false);
}
}
Run Code Online (Sandbox Code Playgroud)