Javaで少し問題があります。これを行う方法: HTML ファイルでタグ href と src を検索し、そのタグに関連付けられた URL を取得したいと考えています。
それを行う最良の方法は何ですか?
助けてくれてありがとう。よろしくお願いします。
Javaで少し問題があります。これを行う方法: HTML ファイルでタグ href と src を検索し、そのタグに関連付けられた URL を取得したいと考えています。
それを行う最良の方法は何ですか?
助けてくれてありがとう。よろしくお願いします。
これを 1 回限りの編集タスクとして行いたいですか、それとも体系的な (コードなどの) 実装が必要ですか? 2 番目のケースでは、Java HTML パーサーの実装を見つけて、DOM ツリーをたどります。
これは、まさにあなたがやりたいことを実現するために使用したコードですが、最初にいくつかのヒントを紹介します。
Java Swing 環境にいる場合は、必ず javax.swing.text.html および javax.swing.text.html.parser パッケージのメソッドを使用してください。残念ながら、これらのほとんどは JEditorPane での使用を意図していますが、これらを確認することを強くお勧めします。
Java 6 API には、HTML の開始タグと終了タグを識別する HTML.Tag と呼ばれるクラスがあります。これを使用して、プログラムでたどるリンクの場所を特定できます。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 インターフェースは、1 つのメソッド hyperlinkUpdate(HyperlinkEvent e) のみを定義します。このメソッドに URL を渡し、JEditorPane オブジェクトで .setPage(evt.getURL()) を呼び出すことができます。これにより、ペインが新しいページで更新され、プロセスを再開できるようになります。
問題がある場合はメッセージを送ってください。この回答に投票してください。
私が使った答えはJTidyでした
Rhinoを使用して、htmlファイルをロードできます。ロードされると、getElementByを使用して任意のノードに移動したり、値を取得したりできます。
最も準拠していないものであっても、任意の HTML ドキュメントから DOM ツリーを構築するtagsoupを見てみましょう。
次に、XPath を使用して、返された NodeList を反復処理します。
//a
と
//画像
私はNeko HTML Parserをこの種の作業 (スクリーン スクレイピング) にうまく使用しました。
import org.cyberneko.html.parsers.DOMParser; org.w3c.dom.Node をインポートします。 パブリック クラス TestParser { public static void main(String[] argv) throws Exception { DOMParser パーサー = 新しい DOMParser(); for (int i = 0; i