我在Java方面遇到了一些问题。 如何执行此操作:我想在HTML文件中搜索标记href和src,然后我想获取与该标记关联的URL。
最好的方法是什么?
感谢您的帮助。 最好的问候。
答案 0 :(得分:2)
您想将此作为一次性编辑任务,还是需要系统(即代码)实现?在第二种情况下,找到Java HTML解析器实现并遍历DOM树。
答案 1 :(得分:1)
这是我用来完成你想要做的事情的代码,但首先让我给你一些提示。
如果您在Java Swing环境中,请确保使用javax.swing.text.html和javax.swing.text.html.parser包中的方法。不幸的是,它们主要用于JEditorPane,但我仍然强烈建议你看一下这些。
Java 6 API中有一个名为HTML.Tag的类,用于标识HTML开始和结束标记,然后您可以使用这些标记来确定您希望程序遵循的链接的位置。{{3 }}
当我编写一个与此非常类似的程序时,我使用了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)
如果您需要有关如何编写这些方法的更多帮助,可以给我发消息,但基本上,您正在寻找初始标记和结束标记,然后您将确定该网址,然后您可以继续下一步,跟随网址。
要关注网址,我建议您使用JEditorPane对象。 javax.swing.event.HyperlinkListener接口只定义了一个方法,hyperlinkUpdate(HyperlinkEvent e),您可以将url传入,然后在JEditorPane对象上调用.setPage(evt.getURL())。然后,这将使用新页面更新窗格,并允许您再次启动该过程。
如果您有任何问题,请告诉我,请将此答案投票!
答案 2 :(得分:0)
如果您的文件是 xhtml文档,则它是标准的xml文档,解析它的麻烦方法是使用jdom。 JDom非常强大,易于使用和理解。
如果您有html文档,可以尝试htmlparser,尤其是课程LinkTag。
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以使用Rhino,然后加载html文件。加载后,您可以使用getElementBy转到任何节点或获取值。
答案 5 :(得分:0)
答案 6 :(得分:0)
我已成功使用Neko HTML Parser进行此类操作(屏幕抓取)。
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