Web Scraping di C#: Tutorial Langkah demi Langkah di 2025

Anh Tuan
Data Science Expert
23-Jan-2025

Panduan ramah Anda untuk scraping situs web, menangani CAPTCHA, dan bahkan mengambil tangkapan layar!
Mengapa Web Scraping di C#?

C# bukan hanya untuk membangun aplikasi Windows atau gameโini juga merupakan kekuatan untuk web scraping! Dengan library seperti HtmlAgilityPack, Selenium, dan Puppeteer Sharp, Anda dapat mengekstrak data, mengotomatiskan interaksi, dan bahkan menyelesaikan CAPTCHA (ya, benar). Dalam tutorial ini, kita akan menggunakan https://www.scrapethissite.com/pages/ sebagai tempat bermain kita. Mari selami!
Langkah 1: Menyiapkan Proyek Anda

Pertama, buat aplikasi konsol C# baru. Kemudian, instal paket NuGet ini:
bash
Install-Package HtmlAgilityPack # Untuk parsing HTML
Install-Package Selenium.WebDriver # Untuk otomatisasi browser
Install-Package PuppeteerSharp # Untuk tangkapan layar & scraping tingkat lanjut
Install-Package Capsolver.SDK # Untuk pemecahan CAPTCHA
Contoh 1: Scraping Halaman Dasar
Mari kita scraping data negara dari 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"); // Bersikap sopan!
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($"Negara: {name}, Ibu Kota: {capital}");
}
Ini mencetak semua negara dan ibu kotanya. Sederhana, kan?
Contoh 2: Menangani JavaScript dengan Selenium
Beberapa halaman membutuhkan browser nyata. Mari kita scraping halaman contoh AJAX menggunakan Selenium:
csharp
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
var options = new ChromeOptions();
options.AddArgument("--headless"); // Jalankan di latar belakang
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($"Konten AJAX: {dynamicContent}");
Contoh 3: Memecahkan CAPTCHA dengan Capsolver
Mendapat CAPTCHA yang menghalangi jalan Anda? Gunakan Capsolver untuk melewati ReCaptchaV2. Begini caranya:
- Daftar untuk Capsolver, ambil kunci API Anda.
- Gunakan API untuk memecahkan 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("Gagal membuat tugas: " + 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("Pemecahan gagal! respon: " + getTaskResponseString);
return null;
}
}
}
}
}
}
Berjalan mulus dengan Selenium untuk mengotomatiskan formulir yang sarat CAPTCHA!
Contoh 4: Mengambil Tangkapan Layar dengan Puppeteer Sharp
Ingin bukti visual dari scraping Anda? Ambil tangkapan layar:
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");
Sempurna untuk debugging atau pengarsipan halaman.
Kiat Pro untuk Web Scraping 2025
- Hormati robots.txt: Periksa https://www.scrapethissite.com/robots.txt terlebih dahulu.
- Pembatasan tingkat: Tambahkan penundaan dengan
Thread.Sleep(2000)untuk menghindari server yang kewalahan. - Rotasi User-Agent: Tiru browser nyata untuk menghindari deteksi.
- Penanganan kesalahan: Bungkus kode dalam blok
try-catchuntuk masalah jaringan.
Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.
Lebih lanjut

Meningkatkan Otomatisasi Perusahaan: Infrastruktur Berbasis LLM untuk Pengenalan CAPTCHA yang Mulus & Efisiensi Operasional
Ketahui bagaimana Infrastruktur Otomatisasi AI yang didukung LLM mengubah pengenalan CAPTCHA, meningkatkan efisiensi proses bisnis dan mengurangi intervensi manual. Optimalkan operasi otomatis Anda dengan solusi verifikasi canggih.

Adรฉlia Cruz
30-Mar-2026

Memperluas Pengumpulan Data untuk Pelatihan LLM: Menyelesaikan CAPTCHA Secara Skala
Pelajari cara meningkatkan pengumpulan data untuk pelatihan LLM dengan menyelesaikan CAPTCHA dalam jumlah besar. Temukan strategi otomatis untuk membangun dataset berkualitas tinggi untuk model AI.

Nikolai Smirnov
27-Mar-2026

Perbaiki Kesalahan Cloudflare 1005: Panduan Pengambilan Data Web & Solusi
Pelajari cara memperbaiki Cloudflare Error 1005 diakses ditolak selama web scraping. Temukan solusi seperti proksi rumah tangga, pemindaian sidik jari peramban, dan CapSolver untuk CAPTCHA. Optimalkan ekstraksi data.

Sora Fujimoto
27-Mar-2026

Cara Menyelesaikan CAPTCHA di OpenBrowser Menggunakan CapSolver (Panduan Otomatisasi Agen AI)
Selesaikan CAPTCHA di OpenBrowser dengan CapSolver. Otomatisasi reCAPTCHA, Turnstile, dan lainnya untuk agen AI dengan mudah.

Aloรญsio Vรญtor
26-Mar-2026

Cara Menyelesaikan CAPTCHA Apa pun di HyperBrowser Menggunakan CapSolver (Panduan Pemasangan Lengkap)
Selesaikan CAPTCHA apa pun di HyperBrowser dengan CapSolver. Otomatiskan reCAPTCHA, Turnstile, AWS WAF, dan lainnya dengan lebih mudah.

Emma Foster
26-Mar-2026

Cara Menyelesaikan reCAPTCHA v2 Python dan API
Pelajari cara menyelesaikan reCAPTCHA v2 dengan Python dan API. Panduan lengkap ini mencakup metode Proxy dan Proxyless dengan kode yang siap produksi untuk otomatisasi.

Aloรญsio Vรญtor
25-Mar-2026

