Wpis z mikrobloga

#programowanie

Praktyczny przykład content miningu, który zamieściłem na prezentacji z systemów webowych na uczelnię ( ͡° ͜ʖ ͡°)

var urls = Enumerable.Range(1, 2)
.Select(i => $@"[http://www.wykop.pl/strona/](http://www.wykop.pl/strona/){i}/")
.Select(url => new WebClient().DownloadStringTaskAsync(url))
.Wait(e => e).Select(e => e.Result)
.SelectMany(html => CQ.Create(html).Find(".article .description .text a"))
.Select(a => a.GetAttribute("href"))
.Take(15)
.Select(url => new
{
Url = url,
Content = new WebClient().DownloadStringTaskAsync(url)
})
.Wait(e => e.Content)
.Select(e => new
{
Url = e.Url,
Comments = CQ.Create(e.Content.Result)
.Find(".comments-stream [data-type='comment'] p")
.Select(comment => comment.InnerText)
})
.Where(
page => page.Comments.Any(
comment => Regex.Match(comment, "piwnic[a|y]", RegexOptions.IgnoreCase).Success
)
)
.Select(page => page.Url);

foreach (var url in urls)
Console.WriteLine(url);