c 抓取网页数据(seleniumSQLite库使用技巧C#教程1、SQLite+谷歌浏览器)
优采云 发布时间: 2022-01-10 10:01c 抓取网页数据(seleniumSQLite库使用技巧C#教程1、SQLite+谷歌浏览器)
C#+Selenium+ChromeDriver爬取网页1.后台
Selenium 是用于 Web 应用程序测试的工具。Selenium 测试直接在浏览器中运行,就像真正的用户一样。对于爬虫来说,使用 Selenium 控制浏览器在互联网上爬取数据,绝对是爬虫中的杀手锏。在这里,我将介绍 selenium + Google Chrome 的一般用法。
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
影响:
谈谈思路:
<p>这是文章关于用C#+Selenium+ChromeDriver爬取网页(模拟真实用户浏览行为)的介绍,更多关于用C#+Selenium+ChromeDriver爬取网页内容的信息,请搜索之前的