public IActionResult JsonResult([FromBody] ObjectJson json)
        {
            var         url    = WebUtility.UrlDecode(json.url);
            MyWebClient client = new MyWebClient()
            {
                Encoding = Encoding.UTF8
            };

            client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36";
            if (json.isID)
            {
                client.DownloadData(url);
                var    mainUrl = client.ResponseUri.ToString();
                var    regex   = JsonConvert.DeserializeObject <JsonIDInput>(json.data);
                string item    = "";
                try
                {
                    var regexMatch = Regex.Match(mainUrl, regex._xpath);
                    item = regexMatch.Groups[regex.group_number].Value;
                }
                catch (Exception) { }
                return(Json(JsonConvert.SerializeObject(new JsonIDresult {
                    url = mainUrl, id = item
                }, Formatting.Indented)));
            }
            else
            {
                var          baseUri  = new Uri(url);
                var          isScript = json.javascript;
                var          config   = StructuredDataConfig.ParseJsonString(json.data);
                var          html     = client.DownloadString(!isScript ? url : this.configuration.GetAppSetting("UrlSeleniumGetHtmlExcuteJavascript") + "?url=" + WebUtility.UrlEncode(url));
                HtmlDocument docc     = new HtmlDocument();
                docc.LoadHtml(html);
                var urltmp = "";
                HtmlNodeCollection nodes = docc.DocumentNode.SelectNodes("//a");
                if (nodes != null)
                {
                    foreach (HtmlNode node in nodes)
                    {
                        if ((node.Attributes["href"] != null) && (node.Attributes["href"].Value != ""))
                        {
                            try
                            {
                                urltmp = node.Attributes["href"].Value.Trim();
                                node.Attributes["href"].Value = new Uri(baseUri, urltmp).AbsoluteUri;
                            }
                            catch (Exception) { }
                        }
                    }
                }
                ;
                html = docc.DocumentNode.InnerHtml;
                var openScraping    = new StructuredDataExtractor(config);
                var scrapingResults = openScraping.Extract(html);
                var result          = JsonConvert.SerializeObject(scrapingResults, Formatting.Indented);
                return(Json(result));
            }
        }
        // Api lấy về html của 1 trang web sau khi xử lý lại. Xóa hết javascript trong trang. CHuyển hết các link động sang tĩnh
        public IActionResult Html(string url, bool javascript)
        {
            var urlDecode = WebUtility.UrlDecode(url);
            Uri uriResult;
            // Kiểm tra xem url có hợp lệ hay không
            bool valid = Uri.TryCreate(urlDecode, UriKind.Absolute, out uriResult) &&
                         (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);

            if (valid)
            {
                // Download html của trang web
                var         baseUri = new Uri(new Uri(urlDecode).GetLeftPart(UriPartial.Authority));
                MyWebClient client  = new MyWebClient();
                client.Encoding = Encoding.UTF8;
                client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36";
                var result = client.DownloadString(urlDecode);
                // CHuyển đổi từ html string sang HtmlParser
                var parser   = new HtmlParser();
                var document = parser.ParseDocument(result);

                //
                IHtmlCollection <IElement> menuItems;
                if (!javascript)
                {
                    // Xóa hết các thẻ script
                    menuItems = document.QuerySelectorAll("script, base");
                    foreach (IElement item in menuItems)
                    {
                        item.Remove();
                    }
                }

                // Bắt tất cả các element có thuộc tính href
                menuItems = document.QuerySelectorAll("[href]");
                var urltmp = "";
                foreach (IElement item in menuItems)
                {
                    try
                    {
                        // Chuyển link động sang link tĩnh
                        urltmp = item.GetAttribute("href");
                        item.SetAttribute("href", new Uri(baseUri, urltmp).AbsoluteUri);
                    }
                    catch (Exception) { }
                }
                // Bắt tất cả các element có thuộc tính src
                menuItems = document.QuerySelectorAll("[src]");
                foreach (IElement item in menuItems)
                {
                    try
                    {
                        // Chuyển link động sang link tĩnh
                        urltmp = item.GetAttribute("src");
                        item.SetAttribute("src", new Uri(baseUri, urltmp).AbsoluteUri);
                    }
                    catch (Exception) { }
                }
                // Bắt tất cả thẻ a trong trang
                menuItems = document.QuerySelectorAll("a");
                foreach (IElement item in menuItems)
                {
                    try
                    {
                        // Chuyển link động sang link tĩnh
                        urltmp = item.GetAttribute("href");
                        item.SetAttribute("href", "javascript:LinkInfo(\"" + new Uri(baseUri, urltmp).AbsoluteUri + "\");");
                    }
                    catch (Exception) { }
                }
                // Bổ sung thêm file css, js để xử lý thêm trong trang
                var element = document.CreateElement("link");
                element.SetAttribute("href", "/Content/myStyle.css");
                element.SetAttribute("rel", "stylesheet");
                document.Head.AppendChild(element);
                var body = document.Body;
                element = document.CreateElement("script");
                element.SetAttribute("src", "/Scripts/jquery-3.3.1.min.js");
                body.Append(element);
                var scriptcss = document.CreateElement("script");
                scriptcss.SetAttribute("src", "/Scripts/css-selector-generator.js");
                body.Append(scriptcss);
                var baseurl      = client.ResponseUri.ToString();
                var scriptInBody = document.CreateElement("script");
                scriptInBody.InnerHtml = "var url = \"" + baseurl + "\";";
                body.Append(scriptInBody);
                var script = document.CreateElement("script");
                script.SetAttribute("src", "/Scripts/myScript.min.js");
                body.Append(script);
                return(PartialView((object)document.DocumentElement.OuterHtml));
            }
            else
            {
                ViewBag.Data = urlDecode;
                return(View("Error"));
            }
        }