【三】C〓〓はWPFに基づいてCef Sharpを使用して万能爬虫をする

8695 ワード

目次
    【一】C〓〓はWPFに基づいてCef Sharpを使用して万能爬虫をする
    【二】C〓〓はWPFに基づいてCef Sharpを使用して万能爬虫をする
    【三】C〓〓はWPFに基づいてCef Sharpを使用して万能爬虫をする
    【四】C菙はWPFに基づいてCef Sharpを使用して万能爬虫類を作る---http Cliient訪問補助類を拡張して代理を設定することができます.
 
CefSharpWebrowserの操作の種類を共有します.
using CefSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ChromeControler
{
    /// 
    ///  CefSharpWebBrowser    
    /// 
    public static class CefWebBrowserControl
    {

        /// 
        ///   html  
        /// 
        /// CefSharp webbrowser
        /// 
        public static async Task GetHtmlSource(CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser)
        {
            string htmlStr = string.Empty;
            await chromiumWebBrowser.GetSourceAsync().ContinueWith(taskHtml =>
            {
                htmlStr = taskHtml.Result;
            });
            return htmlStr;
        }

        /// 
        ///  input  
        /// 
        /// CefSharp webbrowser
        ///   id
        public static string SetValueById(CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser, string id,string value)
        {
            if (id.Length > 0)
            {
                string js = @"(
                            function()
                            {
                                var ele= document.getElementById('" + id + @"');
                                if(ele!=null)
                                {
                                    ele.value='"+value+@"';
                                }
                            }
                           )()";
                ExecuteJs(chromiumWebBrowser, js);
                return "    ";
            }
            else
                return "id    ";
        }

        /// 
        ///  Input  
        /// 
        /// CefSharp webbrowser
        ///        
        ///   html  ***
        ///   html  ***
        public static string SetValueByName(CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser, string name,string value, SearchType searchType = SearchType.ControlName, string innerHtml = "", string outHtml = "")
        {
            string js = string.Empty;
            string forStr = string.Empty;
            if (name.Length > 0)
            {
                if (innerHtml.Length > 0)
                {
                    forStr = "if(eleAug[i].innerText.indexOf('" + innerHtml + "') != -1) ";

                }
                if (outHtml.Length > 0)
                {
                    forStr = "if(eleAug[i].outerText.indexOf('" + outHtml + "') != -1) ";

                }
                string searchjs = string.Empty;
                switch (searchType)
                {
                    case SearchType.ControlName: { searchjs = " var eleAug= document.getElementsByName('" + name + @"');"; } break;
                    case SearchType.ClassName: { searchjs = " var eleAug= document.getElementsByClassName('" + name + @"');"; } break;
                    case SearchType.TagName: { searchjs = " var eleAug= document.getElementsByTagName('" + name + @"');"; } break;
                }
                js = @"(
                            function()
                            {
                               " + searchjs + @"
                                if(eleAug!=null)
                                {
                                    for(var i=0;i< eleAug.length;i++)
                                    {                                    
                                        " + forStr + @"
                                            { ele.value='" + value + @"';}
                                    }
                                }
                            }
                           )()";
            }
            else
            {
                return "      ";
            }
            ExecuteJs(chromiumWebBrowser, js);
            return "    ";
        }


        /// 
        ///     
        /// 
        /// CefSharp webbrowser
        ///   id
        public static string ClickButtonById(CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser, string id)
        {
            if (id.Length > 0)
            {
                string js = @"(
                            function()
                            {
                                var ele= document.getElementById('" + id + @"');
                                if(ele!=null)
                                {
                                    ele.click();
                                }
                            }
                           )()";
                ExecuteJs(chromiumWebBrowser, js);
                return "    ";
            }
            else
                return "id    ";
        }

        /// 
        ///     
        /// 
        /// CefSharp webbrowser
        ///        
        ///   html  ***
        ///   html  ***
        public static string ClickButtonByName(CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser,  string name, SearchType searchType = SearchType.ControlName, string innerHtml = "", string outHtml = "")
        {
            string js = string.Empty;
            string forStr = string.Empty;
            if (name.Length > 0)
            {
                if (innerHtml.Length > 0)
                {
                    forStr = "if(eleAug[i].innerText.indexOf('" + innerHtml + "') != -1) ";

                }
                if (outHtml.Length > 0)
                {
                    forStr = "if(eleAug[i].outerText.indexOf('" + outHtml + "') != -1) ";

                }
                string searchjs = string.Empty;
                switch (searchType)
                {
                    case SearchType.ControlName: { searchjs = " var eleAug= document.getElementsByName('" + name + @"');"; } break;
                    case SearchType.ClassName: { searchjs = " var eleAug= document.getElementsByClassName('" + name + @"');"; } break;
                    case SearchType.TagName: { searchjs = " var eleAug= document.getElementsByTagName('" + name + @"');"; } break;
                }
                js = @"(
                            function()
                            {
                               " + searchjs + @"
                                if(eleAug!=null)
                                {
                                    for(var i=0;i< eleAug.length;i++)
                                    {                                    
                                        " + forStr + @"
                                            { eleAug[i].click();}
                                    }
                                }
                            }
                           )()";
            }
            else
            {
                return "      ";
            }
            ExecuteJs(chromiumWebBrowser, js);
            return "    ";
        }

        /// 
        ///   JS
        /// 
        /// wpf   ChromiumWebBrowser
        /// 
        public static void ExecuteJs(CefSharp.Wpf.ChromiumWebBrowser chromiumWebBrowser, string js)
        {
            var frame = chromiumWebBrowser.WebBrowser.GetMainFrame();
            frame.EvaluateScriptAsync(js);
        }
    }
    public enum SearchType
    {
        ControlName,
        ClassName,
        TagName

    }
}
使用例:
  CefWebBrowser Control.SetValueById(chromium WebBrowser,「kw」,「万能爬虫」)  CefWebBrowser Control.C.lickButtonById(chromium WebBrowser,「ス」)  CefWebBrowser Control.C.lickButton ByName(chromium WebBrowser,「n」,Search Type.rassName,「次のページ」);