3

我在 Java 中遇到了一个小问题。如何做到这一点:我想在 HTML 文件中搜索标签 href 和 src,然后我想获取与该标签关联的 URL。

最好的方法是什么?

谢谢您的帮助。最好的祝福。

4

7 回答 7

2

您想将其作为一次性编辑任务,还是需要系统(即代码)实现?在第二种情况下,找到一个 Java HTML 解析器实现并遍历 DOM 树。

http://java-source.net/open-source/html-parsers

于 2009-03-23T10:11:57.860 回答
1

这是我用来完成您想要做的事情的代码,但首先让我给您一些提示。

如果您在 Java Swing 环境中,请确保使用 javax.swing.text.html 和 javax.swing.text.html.parser 包中的方法。不幸的是,它们主要用于 JEditorPane,但我仍然强烈建议您看看这些。

Java 6 API 中有一个名为 HTML.Tag 的类,它标识 HTML 开始和结束标记,然后您可以使用它来确定您希望程序遵循的链接在哪里。http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Tag.html

当我编写一个与此非常相似的程序时,我使用了 3 个主要方法:

public void handleStartTag(HTML.Tag t, MUtableAttributeSet atts, int pos)
public void handleEndTag(HTML.Tag t, int pos)
public void handleText(char[] text, int pos)

如果您需要有关如何编写这些方法的更多帮助,您可以给我发消息,但基本上,您正在寻找一个初始标签和一个结束标签,然后您将从中识别出 url,然后您可以继续下一步,它在 url 之后。

要遵循 url,我建议您使用 JEditorPane 对象。javax.swing.event.HyperlinkListener 接口只定义了一种方法 hyperlinkUpdate(HyperlinkEvent e),您可以将 url 传递到该方法中,然后在 JEditorPane 对象上调用 .setPage(evt.getURL())。然后,这将使用新页面更新窗格,并允许您再次启动该过程。

如果您有任何问题,请给我留言,请投票给这个答案!

于 2009-03-23T11:07:23.360 回答
0

如果您的文件是一个xhtml 文档,那么它就是一个标准的 xml 文档,并且解析它的最糟糕的方法是使用jdom。JDom 非常强大且易于使用和理解。

如果你有一个 html 文档,你可以试试htmlparser,特别是 LinkTag

于 2009-03-23T10:27:14.627 回答
0

看看这个问题:

我使用的答案是JTidy

于 2009-03-23T10:32:12.210 回答
0

您可以使用Rhino,然后加载 html 文件。加载后,您可以使用 getElementBy 转到任何节点或获取值。

于 2009-03-23T10:36:01.420 回答
0

我会看看tagsoup,它将从任何 HTML 文档构建一个 DOM 树,即使是最不兼容的文档。

然后使用 XPath 并遍历返回的 NodeList:

//一种

//图片

于 2009-03-23T10:49:42.043 回答
0

我已经成功地将Neko HTML Parser用于此类事情(屏幕抓取)。

导入 org.cyberneko.html.parsers.DOMParser;
导入 org.w3c.dom.Node;

公共类TestParser {

     公共静态 void main(String[] argv) 抛出异常 {
          DOMParser 解析器 = 新的 DOMParser();
          对于 (int i = 0; 我
于 2009-03-23T11:07:48.770 回答