.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());
cd.Navigate().GoToUrl("http://chart.icaile.com/sd11x5.php");
string text = cd.FindElementById("fixedtable").Text;
cd.Quit();
Console.WriteLine(text);
Console.Read();
}
}
上一篇:OC类的本质及分类


下一篇:[System] CentOS虚拟机系统克隆后的网络配置