Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void Main(string[] args)
- {
- var file = @"D:\css.csv";
- var adress = GetAlexaTop1mlnUrls("http://s3.amazonaws.com/alexa-static/top-1m.csv.zip").Take(20);
- var list = ParseCSV(@"D:\css.csv").Where(item => !string.IsNullOrEmpty(item));
- using (var stream = new StreamWriter(@"D:\statistic.csv", false, Encoding.UTF8))
- {
- foreach (var item in tmp)
- {
- stream.Write(item + ",");
- var properties = ScanCssFile(item, list);
- stream.Write(string.Join(",", properties));
- stream.WriteLine(",");
- }
- }
- }
- private static IEnumerable<string> ParseCSV(string file)
- {
- var csv = new CsvReader(File.OpenText(file));
- while (csv.Read())
- {
- yield return csv.GetField<string>("Name");
- }
- }
- private static IEnumerable<string> ScanCssFile(string url, IEnumerable<string> list)
- {
- var config = new Configuration().WithDefaultLoader();
- var document = BrowsingContext.New(config).OpenAsync(Url.Create(url)).Result;
- var items = document.QuerySelectorAll(@"[rel=""stylesheet""]").Select(x => x.Attributes.First(atr => atr.Name.Equals("href")).Value);
- if (items.Count() == 0) return SearchCssProperty(url, list);
- return items.SelectMany(x => SearchCssProperty(x, list));
- }
- private static IEnumerable<string> SearchCssProperty(string url,IEnumerable<string> list)
- {
- List<string> properties = new List<string>();
- var content = GetContent(url);
- var css = new CssParser(content).Parse().Rules;
- foreach (var style in css)
- {
- foreach (var i in list)
- {
- if (style.CssText.ToString().Contains(i))
- {
- properties.Add(i);
- }
- }
- }
- return properties.Distinct();
- }
- private static string GetContent(string url)
- {
- using (var client = new WebClient())
- {
- try {
- return client.DownloadString(url);
- }
- catch(Exception)
- {
- return string.Empty;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement