抓取动态网页信息通常需要使用浏览器自带的 JavaScript 引擎来执行 JavaScript 脚本,然后再获取页面的 DOM 结构。在 C# 中,可以使用 Selenium WebDriver 来模拟浏览器操作,从而实现抓取动态网页信息的功能。

下面是一个简单的示例代码,使用 Selenium WebDriver 和 Chrome 浏览器来抓取百度搜索的结果页面:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

// 创建Chrome浏览器实例
IWebDriver driver = new ChromeDriver();

// 访问百度搜索页面
driver.Navigate().GoToUrl('https://www.baidu.com/s?wd=selenium');

// 等待页面加载完成
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(10);

// 执行JavaScript脚本,模拟滚动到页面底部
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript('window.scrollTo(0, document.body.scrollHeight)');

// 获取搜索结果列表
IList<IWebElement> results = driver.FindElements(By.CssSelector('.result'));

// 遍历搜索结果,输出标题和链接
foreach (IWebElement result in results)
{
    string title = result.FindElement(By.CssSelector('h3')).Text;
    string url = result.FindElement(By.CssSelector('a')).GetAttribute('href');
    Console.WriteLine(title + ' - ' + url);
}

// 关闭浏览器实例
driver.Quit();

这段代码首先创建了一个 Chrome 浏览器实例,然后访问百度搜索页面。接着等待页面加载完成,并执行 JavaScript 脚本将页面滚动到底部,以获取更多的搜索结果。最后使用 CSS 选择器获取搜索结果列表,并遍历每个搜索结果,输出标题和链接。最后关闭浏览器实例。


原文地址: https://www.cveoy.top/t/topic/oXER 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录