Я хочу проанализировать URL этого сайта "https://www.171chryslerdodgejeepram.com/", чтобы получить значение DealerId, но я не знаю, как это сделать - PullRequest
0 голосов
/ 16 марта 2020
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("DealerId:")))
{


}

Я пытаюсь получить значение идентификатора дилера с помощью приведенного выше кода, но он ничего не возвращает, но если вы пытаетесь найти DealerId со страницы источника на вышеуказанном веб-сайте, то он там. Пожалуйста, помогите мне добиться этого или, если что-то не так с приведенным выше кодом, пожалуйста, исправьте меня.

Ответы [ 2 ]

0 голосов
/ 16 марта 2020
 var url = "https://www.171chryslerdodgejeepram.com/";
        var web = new HtmlWeb();
        var doc = web.Load(url);
 foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.ToLower().Contains("dealerid")))
                {
                    AdwordsAccount info = new AdwordsAccount();
                    var s = node.InnerText;
                    //Regex r = new Regex("dealerid(.*?)\",");
                    Regex r = new Regex(@"dealerId:\s+'(\d+)'");
                    Match m = r.Match(s.ToLower());
                    info.account = m.Groups[1].Value;
                    urlinfo.adwordsaccount.Add(info);
                }

@ cereberus это мой код

0 голосов
/ 16 марта 2020
  1. вы можете проанализировать JS код с чем-то вроде (https://github.com/sebastienros/jint) и извлечь нужное поле из JS объекта
  2. , вы можете просто найти этот текст (не элегантно, но работает):

UPD1: версия регулярного выражения

    static void Main(string[] args)
    {
        var url = "https://www.171chryslerdodgejeepram.com/";
        var web = new HtmlWeb();
        var doc = web.Load(url);

        foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("dealerId:")))
        {
            var s = node.InnerText;
            Regex r = new Regex(@"dealerId:\s+'(\d+)'");
            Match m = r.Match(s);
            Console.WriteLine(m.Groups[1].Value);
        }

        Console.ReadKey();
    }
...