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

Lucas Mitchell
Automation Engineer
23-Jan-2025

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
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
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
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:
- Cadastre-se no Capsolver, pegue sua chave de API.
- Use a API para resolver um CAPTCHA:
csharp
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
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
- Respeite o robots.txt: Verifique https://www.scrapethissite.com/robots.txt primeiro.
- Limitação de taxa: Adicione atrasos com
Thread.Sleep(2000)para evitar sobrecarregar os servidores. - Rotação de User-Agent: Imite navegadores reais para evitar detecção.
- Tratamento de erros: Envolva o código em blocos
try-catchpara 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 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.

Adélia Cruz
26-Jan-2026

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ô.

Adélia Cruz
21-Jan-2026

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.

Adélia Cruz
21-Jan-2026

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.

Adélia Cruz
21-Jan-2026

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.

Adélia Cruz
20-Jan-2026

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

Sora Fujimoto
20-Jan-2026

