.net core + headless chrome实现动态网页爬虫

一般的http请求库只能够抓取到网页的静态内容,如果想抓取通过js动态生成的内容可以使用没有gui的browser库,之前许多人会使用phantomjs作为headless browser,不过现在phantomjs团队已经宣布停止更新工作,需要一款替代库,于是这里就采用了headless chrome来进行动态网页内容抓取。爬虫实现如下:1.在.net core项目中引用如下nuget包
Selenium.WebDriver
Selenium.WebDriver.ChromeDriver
注意:引用Selenium.WebDriver.ChromeDriver后,会在代码目录中copy出chromedriver.exe文件,exe文件只能运行与windows平台下,所以我们需要去网站(http://chromedriver.storage.googleapis.com/index.html)下载当前最新的chromedriver程序linux版,并将程序添加到项目中,属性设置为复制到输出目录。这样导出的程序才可以在linux和windwos平台下都正常运行。注意2:爬虫的宿主服务器中需要安装和chromedriver一致版本的chrome版本(两个都安装最新版就可以)2.爬虫代码
class Program
    {
        static void Main(string[] args)
        {
            ChromeOptions op = new ChromeOptions();
            op.AddArguments("--headless");//开启无gui模式
            op.AddArguments("--no-sandbox");//停用沙箱以在Linux中正常运行
            ChromeDriver cd = new ChromeDriver(Environment.CurrentDirectory, op,TimeSpan.FromSeconds(180));
            cd.Navigate().GoToUrl("http://chart.icaile.com/sd11x5.php");
            string text = cd.FindElementById("fixedtable").Text;
            cd.Quit();
            Console.WriteLine(text);
            Console.Read();
        }
    }
 

相关内容推荐