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;
            }
        }
Esempio n. 2
0
        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();
        }