using Microsoft.Extensions.Primitives; using PuppeteerSharp; using System.IO; using System.Text; var browserFetcher = new BrowserFetcher(); await browserFetcher.DownloadAsync(); var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false }); var page = await browser.NewPageAsync(); await page.GoToAsync("https://domvsitcom.sharepoint.com/sites/Comunica/SitePages/Portfólio-de-Serviços.aspx"); await page.WaitForSelectorAsync("input[name='loginfmt']"); page.TypeAsync("input[name='loginfmt']", "ricardo.carneiro@domvsit.com.br").Wait(); page.ClickAsync("input[type='submit']").Wait(); page.TypeAsync("input[name='passwd']", "C4rn31r0#13").Wait(); await page.WaitForSelectorAsync("div[title='Serviços']", new WaitForSelectorOptions { Timeout=60000 }); var list = await page.QuerySelectorAllAsync("div[class='ms-List-page'] > div[role='presentation']"); var gotoList = new List(); var content = new Dictionary(); var builder = new StringBuilder(); foreach (var item in list) { var pageHeaderHandle = await item.QuerySelectorAsync("div[role='listitem'] > a"); var link = await pageHeaderHandle.GetPropertyAsync("href"); var linkGoTo = await link.JsonValueAsync(); gotoList.Add(linkGoTo.ToString()); } var first = true; foreach (var url in gotoList) { await page.GoToAsync(url); var pageHeaderHandle = await page.QuerySelectorAsync("div[role='main']"); var link = await pageHeaderHandle.GetPropertyAsync("innerText"); var htmlInside = await link.JsonValueAsync(); var htmlContent = htmlInside.ToString(); var title = htmlContent.Substring(0, htmlContent.IndexOf('\n')); var textContent = htmlContent.Substring(htmlContent.IndexOf('\n') + 2); textContent = textContent.Replace("\n", "\n\t "); var separe = ""; if (!first) separe = "\n\r\n\r\n\r"; var textToSave = $"{separe}**{title}** \n\n\t {textContent} "; content.Add(url, textToSave); builder.Append(textToSave); first = false; } var local = System.Reflection.Assembly.GetExecutingAssembly().Location; File.WriteAllText(Path.Combine(Path.GetDirectoryName(local), "Servicos.txt"), builder.ToString()); await browser.CloseAsync();