Advertisement
Guest User

Untitled

a guest
May 28th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.48 KB | None | 0 0
  1. static void Main(string[] args)
  2.         {
  3.             var file = @"D:\css.csv";
  4.            var adress = GetAlexaTop1mlnUrls("http://s3.amazonaws.com/alexa-static/top-1m.csv.zip").Take(20);
  5.             var list = ParseCSV(@"D:\css.csv").Where(item => !string.IsNullOrEmpty(item));
  6.             using (var stream = new StreamWriter(@"D:\statistic.csv", false, Encoding.UTF8))
  7.             {
  8.                 foreach (var item in tmp)
  9.                 {
  10.                     stream.Write(item + ",");
  11.                     var properties = ScanCssFile(item, list);
  12.                     stream.Write(string.Join(",", properties));
  13.                     stream.WriteLine(",");
  14.  
  15.                 }
  16.             }
  17.         }
  18. private static IEnumerable<string> ParseCSV(string file)
  19.         {
  20.             var csv = new CsvReader(File.OpenText(file));
  21.             while (csv.Read())
  22.             {
  23.                 yield return csv.GetField<string>("Name");
  24.             }
  25.         }
  26.  private static IEnumerable<string> ScanCssFile(string url, IEnumerable<string> list)
  27.         {
  28.             var config = new Configuration().WithDefaultLoader();
  29.             var document = BrowsingContext.New(config).OpenAsync(Url.Create(url)).Result;
  30.             var items = document.QuerySelectorAll(@"[rel=""stylesheet""]").Select(x => x.Attributes.First(atr => atr.Name.Equals("href")).Value);
  31.  
  32.             if (items.Count() == 0) return SearchCssProperty(url, list);
  33.  
  34.             return items.SelectMany(x => SearchCssProperty(x, list));
  35.         }
  36.  
  37.         private static IEnumerable<string> SearchCssProperty(string url,IEnumerable<string> list)
  38.         {
  39.             List<string> properties = new List<string>();
  40.             var content = GetContent(url);
  41.             var css = new CssParser(content).Parse().Rules;
  42.             foreach (var style in css)
  43.             {
  44.                 foreach (var i in list)
  45.                 {
  46.                     if (style.CssText.ToString().Contains(i))
  47.                     {
  48.                         properties.Add(i);
  49.                     }
  50.                 }
  51.             }
  52.             return properties.Distinct();
  53.         }
  54.  
  55. private static string GetContent(string url)
  56.         {
  57.             using (var client = new WebClient())
  58.             {
  59.                 try {
  60.                     return client.DownloadString(url);
  61.                 }
  62.                 catch(Exception)
  63.                 {
  64.                     return string.Empty;
  65.                 }
  66.             }
  67.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement