如何在 HTML 文件中搜索某些标签?

How to search in a HTML file for some tags?

提问人:Ricardo Felgueiras 提问时间:3/23/2009 最后编辑:aymericRicardo Felgueiras 更新时间:9/13/2012 访问量:4466

问:

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

最好的方法是什么?

感谢您的帮助。 此致敬意。

Java HTML 解析

评论


答:

2赞 Wouter Lievens 3/23/2009 #1

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

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

0赞 alexmeia 3/23/2009 #2

如果你的文件是一个 xhtml 文档,那么它是一个标准的 xml 文档,解析它的最佳方法是使用 jdom。JDom 功能强大,易于使用和理解。

如果你有一个 html 文档,你可以尝试 htmlparser,具体来说是 LinkTag 类。

0赞 Richard Walton 3/23/2009 #3

看看这个问题:

我使用的答案是 JTidy

0赞 Thejesh GN 3/23/2009 #4

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

0赞 zuzur 3/23/2009 #5

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

然后使用 XPath 并循环访问由以下人员返回的 NodeList:

一个

IMG的

1赞 HipsterZipster 3/23/2009 #6

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

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

Java 6 API 中有一个名为 HTML 的类。标识 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())。然后,这将使用新页面更新窗格,并允许您再次启动该过程。

如果您有任何疑问,请给我发消息,请投票给这个答案!

0赞 Damo 3/23/2009 #7

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

import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Node;

public class TestParser {

     public static void main(String[] argv) throws Exception {
          DOMParser parser = new DOMParser();
          for (int i = 0; i