我在 Java 中遇到了一个小问题。如何做到这一点:我想在 HTML 文件中搜索标签 href 和 src,然后我想获取与该标签关联的 URL。
最好的方法是什么?
谢谢您的帮助。最好的祝福。
我在 Java 中遇到了一个小问题。如何做到这一点:我想在 HTML 文件中搜索标签 href 和 src,然后我想获取与该标签关联的 URL。
最好的方法是什么?
谢谢您的帮助。最好的祝福。
您想将其作为一次性编辑任务,还是需要系统(即代码)实现?在第二种情况下,找到一个 Java HTML 解析器实现并遍历 DOM 树。
这是我用来完成您想要做的事情的代码,但首先让我给您一些提示。
如果您在 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())。然后,这将使用新页面更新窗格,并允许您再次启动该过程。
如果您有任何问题,请给我留言,请投票给这个答案!
如果您的文件是一个xhtml 文档,那么它就是一个标准的 xml 文档,并且解析它的最糟糕的方法是使用jdom。JDom 非常强大且易于使用和理解。
如果你有一个 html 文档,你可以试试htmlparser,特别是 LinkTag类。
您可以使用Rhino,然后加载 html 文件。加载后,您可以使用 getElementBy 转到任何节点或获取值。
我已经成功地将Neko HTML Parser用于此类事情(屏幕抓取)。
导入 org.cyberneko.html.parsers.DOMParser; 导入 org.w3c.dom.Node; 公共类TestParser { 公共静态 void main(String[] argv) 抛出异常 { DOMParser 解析器 = 新的 DOMParser(); 对于 (int i = 0; 我