2

HTML ページを解析する私のプロジェクトでは、2 つの URL のテンプレートを比較するのと同じように、DOM ツリーをさまざまな操作に使用します。

そのために、私はJSOUPを使用しています。

ただし、動的コンテンツを DOM ツリーにロードすることはできません。

Java で JSOUP を使用して動的コンテンツをロードする方法を教えてください。または、同じことを行うための他の方法を教えてください。

編集番号 1

指定されたリンクが示すように、Java で PhantomJS と Zombie.js を使用して動作ます。これを行う方法を教えてください。

編集2

最初に Selenium を使用して動的ページを取得しようとしました。コードは次のとおりです。

public static void main(String[] args) throws IOException {

 // Selenium
 WebDriver driver = new FirefoxDriver();
 driver.get("ANY URL HERE");  
 String html_content = driver.getPageSource();
 driver.get("ANOTHER URL HERE");
 String html_content1 = driver.getPageSource();
 driver.close();

 // Jsoup makes DOM here by parsing HTML content
 Document doc1 = Jsoup.parse(html_content);
 Document doc2 = Jsoup.parse(html_content1);

 // OPERATIONS USING DOM TREE
}

しかし、これも最適化後に多くの時間がかかります。あなたの指示に従って、HtmlUnitに移動しました。しかし、動的ページのソースコードを String に取得するコードを作成することはできません。次に、この String を使用して Jsoup を使用してさらにペアリングし、HtmlUnit を使用してそのコードを作成するのに役立ちます。

HtmlUnit を使用したコード:-

package XXX.YYY.ZZZ.Template_Matching;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.junit.Assert;
import org.junit.Test;

/**
 *
 * @author jhamb
 */
public class HtmlUnit {

    @Test
    public void homePage() throws Exception {
        final WebClient webClient = new WebClient();
        final HtmlPage page = webClient.getPage("http://www.jabong.com/Yepme-3-4Th-Sleeve-Printed-Blue-Top-Mksp-191481.html");

        Document ht = page.getOwnerDocument();
        System.out.println(ht);

        webClient.closeAllWindows();
    }

    public static void main(String[] args) throws Exception {
        HtmlUnit htmlUnit = new  HtmlUnit();
        htmlUnit.homePage();
    }
}
4

1 に答える 1