2017-08-10 17 views
0

理由のために、私はSelenium/PhantomJSを使用してDOMを再帰しようとしています。 それは動作しますが、その遅いと私はなぜ知っていません。 Findelementsは毎回約250msかかると思われます。Selenium - PhantomJS - DOMトラバーサルのFindelementsが遅い

私はあまり成功していない暗黙の待ちをゼロにしてみました。私はまた、実際の変更なしでXpathを使ってみました。

ここにコードはありますか?

public static void RecurseDomFromTop() 
    { 
     DomRecursor(pjsDriver.FindElement(By.TagName("*"))); 
    } 

    public static void DomRecursor(IWebElement node) 
    { 
     ReadOnlyCollection<IWebElement> iwes = node.FindElements(By.TagName("*")); 

     foreach (IWebElement iwe in iwes) 
     { 
      DomRecursor(iwe); 
     } 

    } 
+2

を取得するためHtmlAgilityPackを使用して記事以下で

ルック? –

+0

私は正確に2つのドムを比較したいと思います。 – cymro

答えて

1

この方法で2つのドームを比較するアプローチは間違っています。 Seleniumリクエストを作成するたびに、作成されたHTTPリクエストがドライバに送信され、ドライバに送信され、ブラウザに送信され、ドライバおよびドライバに戻されて言語バインディングに戻ります。これには多くのオーバーヘッドが伴います。

代わりにdriver.PageSourceを使用して、1回の呼び出しでHTML応答全体を取得してください。その後、今行っているアプローチよりも少なくとも10倍高速なHTML解析ライブラリを使用できます。世界では、各タグを照会するのはなぜDOMデータに

https://www.codeproject.com/Articles/659019/Scraping-HTML-DOM-elements-using-HtmlAgilityPack-H

関連する問題