SeleniumのChromeDriverで文字列を取得するとき、高速化することはできませんか?
一度に最低4000個のIWebElementのプロパティ「Text」から取得しているのですが、30秒~40秒ほどかかります。
改善方法があったら教えてください。
なお、ヘッドレスのブラウザが必要なのでFireFoxなどのヘッドレス未対応のブラウザは使えません。
C#
1 using OpenQA.Selenium; 2 using OpenQA.Selenium.Chrome; 3 using OpenQA.Selenium.Interactions; 4 using System; 5 using System.Drawing; 6 using System.IO; 7 using System.Linq; 8 class Test 9 { 10 11 public void SpeedTest() 12 { 13 //ドライバの作成 14 var driverService = ChromeDriverService.CreateDefaultService(); 15 var option = new OpenQA.Selenium.Chrome.ChromeOptions(); 16 option.AddArgument("--renderer-process-limit=1"); 17 option.AddArgument("--disable-gpu"); 18 option.AddArgument("--no-sandbox"); 19 option.AddArgument("--disable-flash-sandbox"); 20 option.AddArgument("--disable-infobars"); 21 option.PageLoadStrategy = 0; 22 driverService.HideCommandPromptWindow = true; 23 24 IWebDriver driver = new ChromeDriver(driverService, option); 25 26 //ホームページからIWebElement取得 27 driver.Url = "https://www.yahoo.co.jp/"; 28 var elements = driver.FindElements(By.TagName("a")); 29 IWebElement element = elements.FirstOrDefault(dust => !String.IsNullOrEmpty(dust.Text)); 30 31 //4000回取得 32 DateTime befor = DateTime.Now; 33 for (int idx = 0; idx < 4000; idx++) 34 { 35 String text = element.Text; 36 } 37 var timeSpan = DateTime.Now - befor; 38 } 39 }
一つ上位階層の要素を丸ごと取得して、中身を解析する手法は検討しました?
用途的に使えないのであればしょうがないですが。
回答1件
あなたの回答
tips
プレビュー