【一】C# 基于WPF 使用CefSharp来做万能爬虫

目录

    【一】C# 基于WPF 使用CefSharp来做万能爬虫

    【二】C# 基于WPF 使用CefSharp来做万能爬虫

    【三】C# 基于WPF 使用CefSharp来做万能爬虫

    【四】C# 基于WPF 使用CefSharp来做万能爬虫---扩展 一个httpClient访问辅助类可设置代理

 

安装CefSharp,并开始使用

第一步:安装CefSharp

在NuGet里搜索 CefSharp.Wpf 并安装

第二步:使用CefSharp


 

  CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
        public MainWindow()
        {
            InitializeComponent();
            //var handle = new CefChromeHandle();
            //chromiumWebBrowser.RequestHandler = new CefChromeHandle();
           
            rongqi.Children.Add(chromiumWebBrowser);
            
        }

第三步:载入页面

     chromiumWebBrowser.Load("https://www.baidu.com/");

     注:该方法只能在wpf页面渲染出来之后才能执行。

第四步:配置页内只能在本窗体进行载入,不开新弹窗

 1.添加实现类继承 CefSharp.ILifeSpanHandler 该CefSharp提供的接口

    添加using

    using CefSharp;
    using CefSharp.Wpf;  

    如下代码所示


    /// <summary>
    /// 在自己窗口打开链接
    /// </summary>
    internal class OpenPageSelf : ILifeSpanHandler
    {
        public bool DoClose(IWebBrowser browserControl, IBrowser browser)
        {
            return false;
        }

        public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
        {

        }

        public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
        {

        }

        public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,
IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
        {
            newBrowser = null;
            var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
            chromiumWebBrowser.Load(targetUrl);
            return true; //Return true to cancel the popup creation copyright by codebye.com.
        }
    }

2.在使用webbrowser前设置如下

   chromiumWebBrowser.LifeSpanHandler = new OpenPageSelf();

 

第五步:屏蔽webbrowser鼠标右键菜单

1.添加MenuHandler类实现接口 CefSharp.IContextMenuHandler

  代码如下:


    // <summary>
    /// 屏蔽浏览器右键菜单 cef菜单事件
    /// </summary>
    public class MenuHandler : CefSharp.IContextMenuHandler
    {

        void CefSharp.IContextMenuHandler.OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model)
        { 
            model.Clear();
        }

        bool CefSharp.IContextMenuHandler.OnContextMenuCommand(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags)
        {
            //throw new NotImplementedException();
            return false;
        }

        void CefSharp.IContextMenuHandler.OnContextMenuDismissed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame)
        {

            //throw new NotImplementedException();
        }

        bool CefSharp.IContextMenuHandler.RunContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model, CefSharp.IRunContextMenuCallback callback)
        {
            return false;
        }

    }

2.同上,在使用webbrowser前设置下

   chromiumWebBrowser.MenuHandler = new MenuHandler();

第六步 设置下载文件的方法转移

1.新建类DownloadHandler实现 CefSharp.IDownloadHandler

  代码如下:

    /// <summary>
    /// 下载文件
    /// </summary>
    public class DownloadHandler : IDownloadHandler
    {
        public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
        {
            //这里自己写自己下载文件的方式,downloadItem.Url是下载文件的地址,这里是采用ie的下载方式
            WebBrowser ie = new WebBrowser();
            ie.Navigate(downloadItem.Url);
            browser.CloseBrowser(false);
        }

        public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
        {
            downloadItem.IsCancelled = true;
        }

        public bool OnDownloadUpdated(CefSharp.DownloadItem downloadItem)
        {
            return false;
        }

        public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
        {
            throw new NotImplementedException();
        }
    }

2.在使用webbrowser前设置一下

   chromiumWebBrowser.DownloadHandler = new DownloadHandler();

 

到这里爬虫的前奏和基本设置都已经可以了。接下来就主要来开始实现操作页面的一些动作,以及获取和设置CefSharp的Webbrowser内的cookie的方式和方法。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: WPF是一种用于创建Windows桌面应用程序的技术,而CefSharp是一个针对.NET应用程序的Chromium嵌入式浏览器框架。结合使用WPFCefSharp,我们可以创建一个自定义的浏览器应用程序。 首先,我们需要在WPF项目中添加CefSharp的引用,以便能够使用相关功能和组件。接下来,我们可以在XAML文件中创建一个WebBrowser控件,这个控件将会是我们浏览器应用程序的主要窗口。在代码中,我们可以使用CefSharp的API来配置浏览器的行为,比如加载URL、前进、后退、刷新等操作。 为了实现这些功能,我们需要编写一些C#代码。首先,我们需要初始化CefSharp的设置,并在应用程序启动时进行加载。然后,我们可以在浏览器的事件处理程序中编写代码,以响应用户的行为,例如在URL改变时加载新的页面,或在点击后退按钮时返回上一页。 此外,我们还可以通过使用CefSharp提供的API,实现一些其他的自定义功能。例如,我们可以通过JavaScript与浏览器进行交互,执行一些特定的脚本操作,或者通过注入自定义的CSS样式来修改网页的外观。 总而言之,使用WPFCefSharp,我们可以创建一个功能强大且自定义的浏览器应用程序。通过灵活运用CefSharp的API,我们可以实现各种浏览器相关的功能,并与用户进行交互。这是一个非常有用且有趣的项目,可以满足用户对浏览器的个性化需求。 ### 回答2: WPF是一种用于创建富客户端应用程序的开发框架,而CEFSharp是基于Chromium内核的用于嵌入式浏览器的开源框架。使用CEFSharp可以很方便地在WPF应用程序中嵌入浏览器功能。 首先,我们需要在WPF应用程序中添加CEFSharp的NuGet包。然后在XAML中创建一个WindowsFormsHost控件,用于嵌入浏览器。接下来,我们可以在代码中用CEFSharp的ChromiumWebBrowser控件来加载和显示网页。 加载一个网页非常简单,只需调用ChromiumWebBrowser的Load方法并传入网页的URL即可。此外,我们还可以注册一些事件来处理浏览器的加载完成、加载进度、错误等情况。例如,可以使用LoadEnd事件来监听页面加载完成,然后执行一些自定义逻辑。 此外,我们还可以通过调用ChromiumWebBrowser的ExecuteScriptAsync方法来在加载的网页中执行JavaScript代码。这使得我们可以通过与网页进行交互,实现一些复杂的功能。 在加载和显示网页时,我们也可以通过相关API来控制浏览器的行为,比如设置代理、禁用/启用JavaScript、禁止弹出窗口等。 总的来说,使用CEFSharp可以很方便地在WPF应用程序中嵌入浏览器功能。无论是显示网页,还是与网页进行交互,都可以通过CEFSharp轻松实现。这为开发者提供了更多的可能性,使得我们可以在WPF应用程序中创造出更加丰富和复杂的浏览器体验。 ### 回答3: WPF(Windows Presentation Foundation)是一种用于开发Windows应用程序的框架,而CefSharp是一个基于谷歌开源项目Chromium Embedded Framework (CEF)的.NET库,它允许在WPF应用程序中嵌入一个完整的浏览器。 使用CefSharpWPF应用程序中创建一个浏览器可以带来许多好处。首先,由于使用了Chromium的底层技术,CefSharp浏览器具有出色的跨平台兼容性和稳定性。它能够处理各种网页内容,包括HTML,CSS,JavaScript和其他多媒体元素。其次,CefSharp提供了强大的API,开发人员可以使用C#编写代码来控制浏览器的行为。这使得对浏览器的定制和扩展变得非常容易。 要在WPF中集成CefSharp浏览器,首先需要将CefSharp的NuGet包添加到项目中。然后,在需要嵌入浏览器的窗体中,可以使用XAML定义一个WebBrowser控件。接下来,在代码中初始化CefSharp,并设置WebBrowser控件的源为所需的URL或页面内容。 开发人员可以使用C#代码与嵌入的浏览器进行交互。例如,可以使用CefSharp的API执行一些常见的浏览器操作,如导航到新的URL,前进和后退浏览历史记录,或者捕获页面上的事件。此外,还可以通过JavaScript与页面进行交互,实现双向通信。 除了基本的浏览功能,CefSharp还提供了一些高级功能,如自定义页面呈现,浏览器扩展和弹出窗口管理。这些功能使得开发人员能够根据需要定制浏览器的外观和行为。 总之,使用CefSharpWPF应用程序中创建一个浏览器是一种简单而强大的方法,可以使应用程序获得Web浏览功能,并根据需要进行自定义和扩展。无论是实现一个简单的浏览器界面还是构建一个复杂的浏览器应用程序,CefSharp都能提供所需的功能和灵活性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值