using System.Collections.Generic;
using EpisodesTWC_Crawler;
public static void Main()
var categoriesLinks = PageCrawler.GetEpisodesOfTWC("https://www.medscape.com/index/list_10295_0");
namespace EpisodesTWC_Crawler
public static class PageCrawler
static HtmlDocument GetDocument(string url)
HtmlWeb web = new HtmlWeb();
web.OverrideEncoding = Encoding.UTF8;
HtmlDocument doc = web.Load(url);
public static List<EpisodesTWC> GetEpisodesOfTWC(string url)
var episodesList = new List<EpisodesTWC>();
HtmlDocument doc = GetDocument(url);
var linkToNextPage = doc.DocumentNode.SelectSingleNode("//div/a[text() = 'Next']");
HtmlNodeCollection linkNodes = doc.DocumentNode.SelectNodes("//div[@id='archives']/ul/li");
var baseUri = new Uri(url);
while (linkToNextPage != null)
baseUri = new Uri(linkToNextPage.Attributes["href"].Value);
linkToNextPage = doc.DocumentNode.SelectSingleNode("//div/a[text() = 'Next']");
static void GetEpisodesOfThisPage(List<EpisodesTWC> episodesList, HtmlNodeCollection linkNodes, Uri baseUri)
foreach (var episodes in linkNodes)
string href = episodes.Attributes["href"].Value;
var fullUrl = new Uri(baseUri, href).AbsoluteUri;
Console.WriteLine("Cataloging {0}: ", episodes.InnerText.Trim());
public static EpisodesTWC Create(string title, string link, string teaser)
return new EpisodesTWC(title, link, teaser);
private EpisodesTWC(string title, string link, string teaser)
public string Title { get; set; }
public string Link { get; set; }
public string Teaser { get; }
public Episode Episode { get; set; }
public void ExportToCSV()
private Episode(string title, string price) : this()
public static Episode NullBook = new("", "");
public static Episode Create(string title, string price) => new Episode(title, price);
public string Title { get; set; }
public string Price { get; set; }