Как проанализировать данные скрипта в c# и сериализовать то же самое - PullRequest
0 голосов
/ 28 января 2020
public class PageParser
{       
  public List<Websitedata> PageParserMethod()
  {
    var websitedata = new List<Websitedata>();
    HtmlWeb web = new HtmlWeb();
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    HtmlDocument doc = web.Load("https://www.sullivanautomotivegroup.net/");

    var metaTags = doc.DocumentNode.SelectNodes("//meta");
    var foundAppropriateMetaTag = false;
    if (metaTags != null)
    {
      foreach (var tag in metaTags)
      {

        if (tag.Attributes["name"] != null && tag.Attributes["content"] != null)
        {
          foundAppropriateMetaTag = true;
          var name = tag.Attributes["name"].Value;
          var content = tag.Attributes["content"].Value;
          //items.Add(new { name, content });
          Websitedata info = new Websitedata();
          info.name = name;
          info.content = content;
          websitedata.Add(info);
         }
      }
  }
  //var linksOnPage = doc.DocumentNode.Descendants.SelectNodes("//link");
  var linksOnPage = from lnks in doc.DocumentNode.Descendants()
                    where lnks.Name == "a" &&
                    lnks.Attributes["href"] != null &&
                    lnks.InnerText.Trim().Length > 0
                    select new
                    {
                      Url = lnks.Attributes["href"].Value,
                      Text = lnks.InnerText,

                    };
  if (linksOnPage != null)
  {
    foreach (var tag in linksOnPage)
    {
      foundAppropriateMetaTag = true;
      var rel = tag.Text;
      var href = tag.Url;
      Websitedata info = new Websitedata();
      info.rel = rel;
      info.href = href;
      websitedata.Add(info);
      //items.Add(new { rel, href });
     }
   }

   var scriptGoogleTagManager = doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("www.googletagmanager.com"));
   if (scriptGoogleTagManager != null)
   {
     foreach (var tag in scriptGoogleTagManager)
     {
        {
          var abc = tag.InnerText;

          //items.Add(new { abc });
          Websitedata info = new Websitedata();
          info.GoogleTag = abc;
          websitedata.Add(info);
        }
      }
    }
    var FacebookPixel = doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("connect.facebook.net"));
    if (FacebookPixel != null)
    {
     foreach (var tag in FacebookPixel)
     {
       {
         var abc = tag.InnerText;
         //items.Add(new { abc });
         Websitedata info = new Websitedata();
         info.FacebookPixel = abc;
         websitedata.Add(info);
       }
      }
     }

     var newrelic = doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("newrelic"));
     if (newrelic != null)
     {
      foreach (var tag in newrelic)
      {
        {
          var abc = tag.InnerText;
          //items.Add(new { abc });
          Websitedata info = new Websitedata();
          info.NewRelic = abc;
          websitedata.Add(info);
         }
        }
       }
       var adobelinks = doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("adobe"));
        if (adobelinks != null)
        {
          foreach (var tag in adobelinks)
          {
            {
              var abc = tag.InnerText;
              //items.Add(new { abc });
              Websitedata info = new Websitedata();
              info.NewRelic = abc;
              websitedata.Add(info);
             }
            }
           }
           //www.google-analytics.com
           var googleAnalytics = doc.DocumentNode.SelectNodes("//script").Where(x => x.InnerHtml.Contains("www.google-analytics.com/analytics.js"));
           if (googleAnalytics != null)
           {
            foreach (var tag in googleAnalytics)
            {
              {
                foundAppropriateMetaTag = true;
                var abc = tag.InnerText;
                //items.Add(new { abc });
                Websitedata info = new Websitedata();
                info.FacebookPixel = abc;
                websitedata.Add(info);
               }
              }
            }  
                return websitedata;

          }
      }

        public class Websitedata
        {
            public string name { get; set; }
            public string content { get; set; }
            public string rel { get; set; }
            public string href { get; set; }
            public string GoogleTag { get; set; }
            public string FacebookPixel { get; set; }              
            public string NewRelic { get; set; }            
         }

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

...