using System.Threading.Tasks; using Microsoft.Playwright; namespace FinlyticNews.Adapters.Scraping; /// /// Specialized article detail scraper adapter for Finanznachrichten.de. /// public class FinanznachrichtenScraperAdapter : ArticleScraperAdapter { /// public override string Hostname => "finanznachrichten.de"; /// public override string ArticleBodySelector => "#article-content, div.article-text, div.headlineBody"; /// public override async Task TryResolveRedirectUrlAsync(IPage page) { // 1. Bereits auf der Nachricht-Komplett Seite -> Kein Redirect nötig if (page.Url.Contains("/ext/nachricht-komplett")) { return null; } // 2. Extraktion der nachrichtid aus dem Rating Widget (sehr zuverlässig bei FN) var locator = page.Locator("#article--rating-data").First; if (await locator.CountAsync() > 0) { var nachrichtId = await locator.GetAttributeAsync("data-nachrichtid"); if (!string.IsNullOrEmpty(nachrichtId)) { return $"https://www.finanznachrichten.de/ext/nachricht-komplett-{nachrichtId}-0.htm"; } } // 3. Fallback auf Standard "Weiterlesen"-Button Verhalten der Basisklasse return await base.TryResolveRedirectUrlAsync(page); } }