Извлечение данных из сгенерированного <script>и обработка результатов - PullRequest
0 голосов
/ 23 марта 2020

enter image description here

 string Url= "https://www.audiusa.com/dealers-webapp/map/dealer/423E99";   
     HtmlWeb web = new HtmlWeb();
                            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                            HtmlDocument doc = web.Load(Url);
     var scriptGoogleTagManager = doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("window.Audi.Vars.searchType"));
                            if (scriptGoogleTagManager )
                            {
                                foreach(var tag in scriptGoogleTagManager)
                                {
                                    var s = tag.InnerText;
                                    Regex r = new Regex("\\s+window\\.Audi\\.Vars\\.searchResult\\s+\\=\\s+");
                                    Match m = r.Match(s.ToLower());
                                }
                            }

В приведенном выше сценарии я хочу извлечь значения после window.Audi.Vars.searchResult = и window.Audi.Vars.dealers = .I am сталкиваюсь с проблемой в регулярных выражениях, так как я не очень разбираюсь в ней. Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 23 марта 2020

Я понимаю, что вы хотите избавиться, например, от
window.Audi.Vars.searchResult =

var extract = s.slice(31); // since the string "window.Audi.Vars.searchResult =" has 31 chars

Метод slice () извлекает части строки и возвращает извлеченные части в новой строке. Используйте параметры начала и конца, чтобы указать часть строки, которую вы хотите извлечь. Здесь мы только даем стартовый параметр, и он извлекает до конца. Первый символ имеет позицию 0, второй - позицию 1 и так далее. > br> Regex imho хорош, когда связываете, удаляя символы в строке, здесь работает более простой метод.

Измените ваш код и опубликуйте консольный результат:

 var scriptGoogleTagManager = doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("window.Audi.Vars.searchType"));
                    if (scriptGoogleTagManager )
                    {
                        foreach(var tag in scriptGoogleTagManager)
                        {
                            var s = tag.InnerText;
                            console.debug("[content of s] " + s); 
                            var extract = s.slice(31); // since the string
                        }
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...