隐藏

C#使用selenium的爬虫速度再提升十倍的方法在这

发布:2020/9/25 11:49:14作者:管理员 来源:本站 浏览次数:1101

紧接上文啊!
这个方法
其实就是使用打开窗口的方式。使用下面这行核心代码:

 driver.ExecuteScript("window.open(\"" + url + "\")"); 
  • 1

就这么简单。
你可以一次性打开浏览器的20个窗口,然后获取他们的窗口句柄,通过切换窗口句柄,来得到源码,进行操作。

void craw()
{
int currentIndex=0;
List<string > urlList=new List<string>();
 for (int i = 0; i < 20; i++)
 {
 urlList.Add("https://mp.csdn.net/mdeditor/99235045");
}
 for (int i = 0; i < 20; i++)
 {
  driver.ExecuteScript("window.open(\"" + urlList[currentIndex] + "\")");
   currentIndex++;        
}
 List<string> handleList = new List<string>();
                var windowHandles = driver.WindowHandles;
               
                foreach (var item in windowHandles)
                {
                    handleList.Add(item);
                }
      for (int i = 1; i < handleList.Count; i++)
                {
                 driver.SwitchTo().Window(handleList[handleList.Count-i]);//后面的先加载完
                   if (i ==1)
                        {
                            Thread.Sleep(5000);
                        }
                        Console.WriteLine(driver.Title);//你对网址的操作,我就是输出了一下标题
                }      

} 

你如果是同时达到五个浏览器,这些二十个窗口是同时进行加载的。最理想的情况下,网速内存都不考虑,那就是提高了近二十倍的速度。
不过这种事情,不可贪多,20个刚刚好,打开窗口过多,会被浏览器给封掉的。