1

私はMavenでプロジェクトをやっています。URl からページを取得しようとしています。今まで私はウェブからページを取得することに成功しています。2点質問なのですが、

質問,

  1. 以下のコードは、2 つの URL ページを取得するのに約 14 秒かかります。この時間を短縮するにはどうすればよいですか。最適化を手伝ってください。
  2. 実行が完了した後、コードを終了しません。なんで ?でコードを終了しましたdriver.close()。次に、なぜ、正常に終了しません。プロセスの開始前と完了後にスナップショットを追加しました。これらをご覧ください。

私の問題で私を助けてください。お願いします。

私のコード:-

package XXX.YYY.ZZZ.Template_Matching;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import java.io.IOException;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.w3c.dom.Document;

public class HtmlUnit {
   
    public static void main(String[] args) throws Exception {
        String url1 = "http://www.jabong.com/men/shoes/men-loafers/?source=home-leftnav";
        String url2 = "http://www.jabong.com/fastrack-9915Pp36J-Black-Pink-Analog-Watch-198499.html";
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C://Users//jhamb//Desktop//phantomjs-1.9.0-windows//phantomjs.exe");
        WebDriver driver = new PhantomJSDriver(caps);
        driver.get(url1);
        String hml1 = driver.getPageSource();
        driver.get(url2);
        String hml2 = driver.getPageSource();
        driver.close();
        //System.out.println(hml1);
        //System.out.println(hml2);
           Document doc1 = Jsoup.parse(hml1);
           Document doc2 = Jsoup.parse(hml2);
           // Some operations using these DOM tree, just like , comparing Templates of two URLS
    }
}

プロセスを開始する前のスナップショット、

ここに画像の説明を入力

プロセスが完了した後のスナップショット、理由もなく待機している場合、

ここに画像の説明を入力

4

2 に答える 2

1

ドライバーがスレッドを作成していて、終了しなかったと思われます。main の最後に System.exit を追加してみて、問題が解決するかどうかを確認してください。

于 2013-04-08T05:45:03.260 に答える