CAPSOLVER
Blog
Web Scraping em C#: Tutorial Passo a Passo em 2025

Raspagem Web em C#: Tutorial Passo a Passo em 2025

Logo of CapSolver

Lucas Mitchell

Automation Engineer

23-Jan-2025

webscraping, csharp, capsolver

Seu guia amigável para raspar sites, lidar com CAPTCHAs e até tirar screenshots!


Por que Web Scraping em C#?

C# não serve apenas para construir aplicativos ou jogos para Windows — também é uma potência para web scraping! Com bibliotecas como HtmlAgilityPack, Selenium e Puppeteer Sharp, você pode extrair dados, automatizar interações e até resolver CAPTCHAs (sim, realmente). Neste tutorial, usaremos https://www.scrapethissite.com/pages/ como nosso playground. Vamos mergulhar!


Passo 1: Configurando seu Projeto

Primeiro, crie um novo aplicativo de console C#. Em seguida, instale esses pacotes NuGet:

bash Copy
Install-Package HtmlAgilityPack        # Para análise HTML
Install-Package Selenium.WebDriver     # Para automação do navegador
Install-Package PuppeteerSharp         # Para screenshots e scraping avançado
Install-Package Capsolver.SDK          # Para resolução de CAPTCHA

Exemplo 1: Web Scraping Básico

Vamos raspar dados de países de https://www.scrapethissite.com/pages/simple/.

csharp Copy
using HtmlAgilityPack;
using System.Net;

var url = "https://www.scrapethissite.com/pages/simple/";
var client = new WebClient();
client.Headers.Add("User-Agent", "Mozilla/5.0"); // Seja educado!
var html = client.DownloadString(url);

var doc = new HtmlDocument();
doc.LoadHtml(html);

var countries = doc.DocumentNode.SelectNodes("//div[@class='country']");
foreach (var country in countries)
{
    var name = country.SelectSingleNode(".//h3").InnerText.Trim();
    var capital = country.SelectSingleNode(".//span[@class='country-capital']").InnerText.Trim();
    Console.WriteLine($"País: {name}, Capital: {capital}");
}

Isso imprime todos os países e suas capitais. Simples, certo?


Exemplo 2: Lidando com JavaScript com Selenium

Algumas páginas precisam de um navegador real. Vamos raspar a página de exemplo AJAX usando Selenium:

csharp Copy
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

var options = new ChromeOptions();
options.AddArgument("--headless"); // Executar em segundo plano
using var driver = new ChromeDriver(options);

driver.Navigate().GoToUrl("https://www.scrapethissite.com/pages/ajax-javascript/");
var dynamicContent = driver.FindElement(By.CssSelector(".ajax-content")).Text;
Console.WriteLine($"Conteúdo AJAX: {dynamicContent}");

Exemplo 3: Resolvendo CAPTCHAs com Capsolver

Tem um CAPTCHA bloqueando seu caminho? Use Capsolver para contornar o ReCaptchaV2. Veja como:

  1. Cadastre-se no Capsolver, pegue sua chave de API.
  2. Use a API para resolver um CAPTCHA:
csharp Copy
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text;
using System.Text.Json;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Threading;

namespace CapSolverSeleniumExample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string token = await GetCaptchaToken();
            using var driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://www.example.com");
            Thread.Sleep(5000);
            driver.ExecuteScript("document.getElementById('g-recaptcha-response').innerHTML = arguments[0];", token);
            var submitButton = driver.FindElement(By.Id("submit-button"));
            submitButton.Click();
            Thread.Sleep(5000);
            driver.Quit();
        }

        static async Task<string> GetCaptchaToken()
        {
            string apiKey = "YOUR_API_KEY";
            string siteKey = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-";
            string siteUrl = "https://www.example.com";
            using var client = new HttpClient();
            var payload = new
            {
                clientKey = apiKey,
                task = new
                {
                    type = "ReCaptchaV3TaskProxyLess",
                    websiteKey = siteKey,
                    websiteURL = siteUrl,
                    pageAction = "login"
                }
            };
            var requestContent = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");
            var createTaskResponse = await client.PostAsync("https://api.capsolver.com/createTask", requestContent);
            var createTaskResponseString = await createTaskResponse.Content.ReadAsStringAsync();
            using var createTaskJsonDoc = JsonDocument.Parse(createTaskResponseString);
            var root = createTaskJsonDoc.RootElement;
            if (!root.TryGetProperty("taskId", out var taskIdElement))
            {
                Console.WriteLine("Falha ao criar tarefa: " + createTaskResponseString);
                return null;
            }
            int taskId = taskIdElement.GetInt32();
            while (true)
            {
                await Task.Delay(1000);
                var resultPayload = new { clientKey = apiKey, taskId = taskId };
                var resultContent = new StringContent(JsonSerializer.Serialize(resultPayload), Encoding.UTF8, "application/json");
                var getTaskResponse = await client.PostAsync("https://api.capsolver.com/getTaskResult", resultContent);
                var getTaskResponseString = await getTaskResponse.Content.ReadAsStringAsync();
                using var getTaskJsonDoc = JsonDocument.Parse(getTaskResponseString);
                var resultRoot = getTaskJsonDoc.RootElement;
                if (resultRoot.TryGetProperty("status", out var statusElement))
                {
                    string status = statusElement.GetString();
                    if (status == "ready")
                    {
                        if (resultRoot.TryGetProperty("solution", out var solutionElement) && solutionElement.TryGetProperty("gRecaptchaResponse", out var tokenElement))
                        {
                            return tokenElement.GetString();
                        }
                        return null;
                    }
                    if (status == "failed" || resultRoot.TryGetProperty("errorId", out _))
                    {
                        Console.WriteLine("Resolução falhou! resposta: " + getTaskResponseString);
                        return null;
                    }
                }
            }
        }
    }
}

Funciona perfeitamente com o Selenium para automatizar formulários repletos de CAPTCHA!


Exemplo 4: Tirando Screenshots com Puppeteer Sharp

Quer uma prova visual do seu scraping? Capture uma screenshot:

csharp Copy
using PuppeteerSharp;

await new BrowserFetcher().DownloadAsync();
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
using var page = await browser.NewPageAsync();

await page.GoToAsync("https://www.scrapethissite.com/pages/javascript/");
await page.ScreenshotAsync("screenshot.png");

Perfeito para depurar ou arquivar páginas.


Dicas Profissionais para Web Scraping em 2025

  1. Respeite o robots.txt: Verifique https://www.scrapethissite.com/robots.txt primeiro.
  2. Limitação de taxa: Adicione atrasos com Thread.Sleep(2000) para evitar sobrecarregar os servidores.
  3. Rotação de User-Agent: Imite navegadores reais para evitar detecção.
  4. Tratamento de erros: Envolva o código em blocos try-catch para problemas de rede.

Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.

Mais

Bloqueios de IP em 2026: Como Funcionam e Formas Práticas para Bypassar os Bloqueios
Bloqueios de IP em 2026: Como Funcionam e Métodos Práticos para Contornar Eles

Aprenda como burlar o banimento de IP em 2026 com nosso guia abrangente. Descubra técnicas modernas de bloqueio de IP e soluções práticas como proxies residenciais e solucionadores de CAPTCHA.

web scraping
Logo of CapSolver

Adélia Cruz

26-Jan-2026

Maxun com Integração CapSolver
Como resolver Captcha no Maxun com Integração do CapSolver

Um guia prático para integrar o CapSolver com o Maxun para raspagem de web realista. Aprenda como lidar com reCAPTCHA, Cloudflare Turnstile e sites protegidos por CAPTCHA usando fluxos de trabalho de pré-autenticação e robô.

web scraping
Logo of CapSolver

Adélia Cruz

21-Jan-2026

Melhores Ferramentas de Extração de Dados para Usar em 2026 (Comparação Completa)
Melhores Ferramentas de Extração de Dados para Usar em 2026 (Comparação Completa)

Descubra as melhores ferramentas de extração de dados para 2026. Compare as principais plataformas de raspagem de web, ETL e com inteligência artificial para automatizar sua coleta de dados e fluxos de trabalho de IA.

Logo of CapSolver

Adélia Cruz

21-Jan-2026

Browser4 com Integração do CapSolver
Como resolver Captcha no Browser4 com integração do CapSolver

Automação do Browser4 de alto throughput combinada com o CapSolver para lidar com desafios de CAPTCHA na extração de dados da web em larga escala.

web scraping
Logo of CapSolver

Adélia Cruz

21-Jan-2026

Melhores 7 Ferramentas de Agentes de IA
Melhores 7 Ferramentas de Agentes de IA para Automação da Web em 2026

Descubra os Melhores 7 Ferramentas de Agentes de IA para Automação Web em 2026. Revisamos CrewAI, MultiOn e mais, classificando-as pelo desempenho em ambientes reais e resiliência para agentes de IA em produção.

ai
Logo of CapSolver

Adélia Cruz

20-Jan-2026

Resolva captchas ilimitados com o melhor solucionador de captchas
Resolva Captchas Ilimitados com o Melhor Solucionador de Captcha

Aprenda a resolver sem problemas captchas ilimitados com o melhor solver de captchas, um guia detalhado sobre como configurar e automatizar soluções de captchas de forma eficaz

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

20-Jan-2026