C#使用CefSharp控件实现爬虫

yizhihongxing

以下是详细讲解“C#使用CefSharp控件实现爬虫”的完整攻略:

1.什么是CefSharp

CefSharp是一种基于Chromium Embedded Framework(CEF)的.NET开源项目,通过将Chromium增加到应用程序中,可以在WinForms和WPF应用程序中嵌入HTML内容,运行JavaScript等。它极大地提高了.NET应用程序与Web的集成度。

2.CefSharp的安装

要在C#项目中使用CefSharp,你需要通过NuGet包管理器安装CefSharp。在Visual Studio中,你可以右键单击解决方案资源管理器中的项目名称,然后单击“Manage NuGet Packages...”打开NuGet包管理器。在搜索栏中输入“CefSharp”,选择最新版本并安装。

3.创建一个基本的CefSharp窗体

在程序中加入以下引用:

using CefSharp;
using CefSharp.WinForms;

然后在窗口中创建ChromiumWebBrowser控件:

private ChromiumWebBrowser chromeBrowser;

在Form的构造函数中初始化:

//InitializeComponent(); 
chromeBrowser = new ChromiumWebBrowser("http://www.google.com");
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;

运行程序,应该可以看到一个基本的CefSharp窗体,展示www.google.com。

4.爬取网站数据

现在,我们默认要爬取的网站是百度,下面是完整的爬虫代码:

var chromeBrowser = new ChromiumWebBrowser("http://www.baidu.com");

chromeBrowser.LoadingStateChanged += async (sender, args) =>
{
    if (args.IsLoading == false)
    {
        var js = "document.getElementsByName('wd')[0].value='CefSharp';document.getElementById('su').click();";
        var task = chromeBrowser.EvaluateScriptAsync(js);
        await task.ContinueWith((t) =>
        {
            var response = t.Result;
            var getRows = $"document.getElementsByClassName('result c-container new-pmd')";

            var rows = chromeBrowser.EvaluateScriptAsync(getRows).Result;
            foreach (var row in rows.Result.AsArray)
            {
                var title = row.Children[1].FirstChild.TextContent;
                var url = row.Children[0].FirstChild.FirstChild.FirstChild.FirstChild.Attribute("href");

                Console.WriteLine($"{title}\n\t{url}\n");
            }
        }, TaskScheduler.FromCurrentSynchronizationContext());
    }
};

此代码创建了一个ChromiumWebBrowser实例,并加载百度首页。当该页面加载完毕后,代码会在搜索框中输入“CefSharp”,并点击搜索进行搜索。当搜索结果加载出来后,代码会遍历所有搜索结果,提取每个搜索结果的标题和网址并打印到控制台中。

以上就是“C#使用CefSharp控件实现爬虫”的完整攻略,希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用CefSharp控件实现爬虫 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#实现几十万级数据导出Excel及Excel各种操作实例

    C#实现几十万级数据导出Excel及Excel各种操作实例 在C#中,我们可以使用第三方库EPPlus来处理Excel文件。以下是几步实现几十万级数据导出Excel的完整攻略: 步骤一:安装EPPlus库 我们可以在NuGet中添加EPPlus库,或是通过官方网站下载最新版。 步骤二:创建Excel文件 我们可以通过以下代码来创建一个Excel文件及相关信息…

    C# 2023年6月7日
    00
  • C#泛型的逆变协变之个人理解

    下面是关于C#泛型的逆变协变的个人理解和相关示例: 什么是泛型逆变和协变? 在C#中,泛型指的是具有参数化类型的类和方法。逆变和协变是泛型中的一种特殊的概念,它们分别指泛型类型参数的赋值方式和约束条件。 泛型逆变(contravariance)指的是泛型类、泛型委托等类型参数的类型参数能够赋值给其父类型参数,或者其父类型参数的类型参数(即父类型的类型参数)能…

    C# 2023年5月14日
    00
  • C#实现简易的计算器

    C#实现简易的计算器可以分为以下步骤: 1. 创建C#控制台应用程序 首先,在Visual Studio中创建一个新的C#控制台应用程序,为其命名并设置相关参数。创建完成后,我们就可以开始编写代码了。 2. 实现基本的四则运算功能 创建一个类来实现计算器。该类应该包含加、减、乘、除四种运算方法。例如: class Calculator { public do…

    C# 2023年6月7日
    00
  • 采用C#实现软件自动更新的方法

    下面是我准备的关于“采用C#实现软件自动更新的方法”的完整攻略。 概述 在软件开发的过程中,软件更新是一个非常重要的工作。而采用自动更新可以使得更新过程更加便捷,省去用户手动下载、更新等等步骤。本文基于C#语言,给大家分享了一个实现软件自动更新的方法。 实现方法 下面是我们按照步骤来实现自动更新的方法: 步骤一:在服务器端(通常是Web服务器)放置版本升级文…

    C# 2023年6月1日
    00
  • C# dataset存放多张表的实例

    下面是详细的“C# dataset存放多张表的实例”攻略: 1. 创建dataset实例 在使用dataset存放多张表之前,需要创建一个dataset的实例,代码如下: DataSet ds = new DataSet(); 2. 创建多张表 在创建了dataset实例之后,需要在其中创建多张表。代码如下: DataTable dt1 = new Data…

    C# 2023年5月31日
    00
  • C#的Excel导入、导出

    下面给您详细讲解C#中的Excel导入和导出的完整攻略。 导入Excel 使用第三方库 要导入Excel文件到C#程序中,常用的做法是使用第三方库。其中比较常用的库有: NPOI:NPOI是C#的开源库,用于按照Microsoft Office的公开标准读写Excel文件。功能强大,支持.xls、.xlsx、.ppt、.pptx、.doc和.docx等Off…

    C# 2023年5月15日
    00
  • 自定义实现Json字符串向C#对象转变的方法

    自定义实现 Json 字符串向 C# 对象转化的方法,可以参考以下步骤: 步骤1:实现一个 Json 转化类 创建一个类,用于将 Json 字符串转换为 C# 对象。这个类应当包括一个将 Json 字符串解析成 JObject 对象的方法。可以使用 Newtonsoft.Json 库来实现: using Newtonsoft.Json.Linq; publi…

    C# 2023年5月31日
    00
  • .Net Core跨平台应用开发串口篇HelloArm

    .NET Core跨平台应用开发串口篇HelloArm 在本攻略中,我们将详细讲解如何使用.NET Core开发跨平台应用程序,并使用串口进行通信。我们将提供两个示例说明。 开发环境 在开始本攻略之前,需要准备以下开发环境: .NET Core SDK Visual Studio Code C#扩展程序 创建.NET Core应用程序 在开始本攻略之前,需要…

    C# 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部