public IActionResult Scrape([FromBody] string menuUrl = "https://www.pure.co.uk/menus/breakfast") { try { // Validate input URL if (string.IsNullOrWhiteSpace(menuUrl) || !menuUrl.Contains("pure.co.uk/menus")) { _logger.LogError($"{nameof(menuUrl)} value is invalid."); } // Initialize scraper strategy IStrategy pureStrategy = new StrategyPureCoUk(menuUrl); // Execute scraper strategy List <ProductSimple> products = _engine.ExecuteStrategy(pureStrategy).ToList(); // Serialize to JSON and return JsonSerializerOptions jso = new JsonSerializerOptions(); jso.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping; jso.WriteIndented = true; var jsonString = JsonSerializer.Serialize(products, jso); return(Ok(jsonString)); } catch (Exception e) { Console.WriteLine(e); throw; } }
static void Main(string[] args) { ScrapingEngine engine = new ScrapingEngine(); // Initialize scraper strategy IStrategy pureStrategy = new StrategyPureCoUk("https://www.pure.co.uk/menus/breakfast"); // Execute scraper strategy var result = engine.ExecuteStrategy(pureStrategy); foreach (ProductSimple product in result) { Console.WriteLine($"{product.DishName}"); } Console.ReadLine(); }