当前位置:   article > 正文

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

cefsharp 爬虫 wpf

目录

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

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

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

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

 

安装CefSharp,并开始使用

第一步:安装CefSharp

在NuGet里搜索 CefSharp.Wpf 并安装

第二步:使用CefSharp


 

  1. CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
  2. public MainWindow()
  3. {
  4. InitializeComponent();
  5. //var handle = new CefChromeHandle();
  6. //chromiumWebBrowser.RequestHandler = new CefChromeHandle();
  7. rongqi.Children.Add(chromiumWebBrowser);
  8. }

第三步:载入页面

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

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

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

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

    添加using

    using CefSharp;
    using CefSharp.Wpf;  

    如下代码所示


  1. /// <summary>
  2. /// 在自己窗口打开链接
  3. /// </summary>
  4. internal class OpenPageSelf : ILifeSpanHandler
  5. {
  6. public bool DoClose(IWebBrowser browserControl, IBrowser browser)
  7. {
  8. return false;
  9. }
  10. public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
  11. {
  12. }
  13. public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
  14. {
  15. }
  16. public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
  17. string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,
  18. IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
  19. {
  20. newBrowser = null;
  21. var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
  22. chromiumWebBrowser.Load(targetUrl);
  23. return true; //Return true to cancel the popup creation copyright by codebye.com.
  24. }
  25. }

2.在使用webbrowser前设置如下

   chromiumWebBrowser.LifeSpanHandler = new OpenPageSelf();

 

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

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

  代码如下:


  1. // <summary>
  2. /// 屏蔽浏览器右键菜单 cef菜单事件
  3. /// </summary>
  4. public class MenuHandler : CefSharp.IContextMenuHandler
  5. {
  6. void CefSharp.IContextMenuHandler.OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model)
  7. {
  8. model.Clear();
  9. }
  10. bool CefSharp.IContextMenuHandler.OnContextMenuCommand(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags)
  11. {
  12. //throw new NotImplementedException();
  13. return false;
  14. }
  15. void CefSharp.IContextMenuHandler.OnContextMenuDismissed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame)
  16. {
  17. //throw new NotImplementedException();
  18. }
  19. bool CefSharp.IContextMenuHandler.RunContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model, CefSharp.IRunContextMenuCallback callback)
  20. {
  21. return false;
  22. }
  23. }

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

   chromiumWebBrowser.MenuHandler = new MenuHandler();

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

1.新建类DownloadHandler实现 CefSharp.IDownloadHandler

  代码如下:

  1. /// <summary>
  2. /// 下载文件
  3. /// </summary>
  4. public class DownloadHandler : IDownloadHandler
  5. {
  6. public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
  7. {
  8. //这里自己写自己下载文件的方式,downloadItem.Url是下载文件的地址,这里是采用ie的下载方式
  9. WebBrowser ie = new WebBrowser();
  10. ie.Navigate(downloadItem.Url);
  11. browser.CloseBrowser(false);
  12. }
  13. public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
  14. {
  15. downloadItem.IsCancelled = true;
  16. }
  17. public bool OnDownloadUpdated(CefSharp.DownloadItem downloadItem)
  18. {
  19. return false;
  20. }
  21. public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
  22. {
  23. throw new NotImplementedException();
  24. }
  25. }

2.在使用webbrowser前设置一下

   chromiumWebBrowser.DownloadHandler = new DownloadHandler();

 

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/257995
推荐阅读
相关标签
  

闽ICP备14008679号