千家信息网

如何用C#+Selenium+ChromeDriver爬取网页

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,小编今天带大家了解如何用C#+Selenium+ChromeDriver爬取网页,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题
千家信息网最后更新 2025年11月07日如何用C#+Selenium+ChromeDriver爬取网页

小编今天带大家了解如何用C#+Selenium+ChromeDriver爬取网页,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习"如何用C#+Selenium+ChromeDriver爬取网页"的知识吧。

1.背景

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。而对于爬虫来说,使用Selenium操控浏览器来爬取网上的数据那么肯定是爬虫中的杀手武器。这里,我将介绍selenium + 谷歌浏览器的一般使用。

2.需求

在平常的爬虫开发中,有时候网页是一堆js堆起来的代码,涉及很多异步计算,如果是普通的http 控制台请求,那么得到的源文件是一堆js ,需要自己在去组装数据,很费力;但是采用Selenium+ChromeDriver可以达到所见即所得的完美效果。

3.实现方式

项目结构:为了方便使用,用的winform程序,附nuget包

以下是form1.cs的代码,这里就只放关键方法代码了。需要安装最新的chrome浏览器+代码中使用的chromedriver是 v2.9.248315

 #region 异常  退出chromedriver        [DllImport("user32.dll", EntryPoint = "FindWindow")]        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);        [DllImport("user32.dll", EntryPoint = "SendMessage")]        public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);        public const int SW_HIDE = 0;        public const int SW_SHOW = 5;        [DllImport("user32.dll", EntryPoint = "ShowWindow")]        public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);        ///         /// 获取窗口句柄        ///         ///         public IntPtr GetWindowHandle()        {            string name = (Environment.CurrentDirectory + "\\chromedriver.exe");            IntPtr hwd = FindWindow(null, name);            return hwd;        }        ///         /// 关闭chromedriver窗口        ///         public void CloseWindow()        {            try            {                IntPtr hwd = GetWindowHandle();                SendMessage(hwd, 0x10, 0, 0);            }            catch { }        }        ///         /// 退出chromedriver        ///         ///         public void CloseChromeDriver(IWebDriver driver)        {            try            {                driver.Quit();                driver.Dispose();            }            catch { }            CloseWindow();        }        #endregion 异常  退出chromedriver

效果:

说一下思路:

  • 1.跳转到指定的网页driver.Navigate().GoToUrl

  • 2.确定数据源,从driver.PageSource读取数据

  • 3.对html数据进行解析

感谢大家的阅读,以上就是"如何用C#+Selenium+ChromeDriver爬取网页"的全部内容了,学会的朋友赶紧操作起来吧。相信小编一定会给大家带来更优质的文章。谢谢大家对网站的支持!

0