Truy cập dữ liệu web bằng C#: Hướng dẫn từng bước năm 2025

Emma Foster
Machine Learning Engineer
23-Jan-2025
vi

*Hướng dẫn thân thiện của bạn để trích xuất dữ liệu từ trang web, xử lý CAPTCHA và thậm chí chụp ảnh màn hình!*
---
### Tại sao lại trích xuất dữ liệu từ trang web bằng C#?

C# không chỉ dùng để xây dựng ứng dụng Windows hoặc trò chơi—nó cũng là một công cụ mạnh mẽ để trích xuất dữ liệu từ trang web! Với các thư viện như **HtmlAgilityPack**, **Selenium**, và **Puppeteer Sharp**, bạn có thể trích xuất dữ liệu, tự động hóa các tương tác và thậm chí giải quyết CAPTCHA (đúng vậy, thật đấy). Trong hướng dẫn này, chúng ta sẽ sử dụng [https://www.scrapethissite.com/pages/](https://www.scrapethissite.com/pages/) làm sân chơi của chúng ta. Hãy bắt đầu nào!
---
### Bước 1: Thiết lập dự án của bạn

Đầu tiên, tạo một ứng dụng console C# mới. Sau đó, cài đặt các gói NuGet này:
```bash
Install-Package HtmlAgilityPack # Để phân tích cú pháp HTML
Install-Package Selenium.WebDriver # Để tự động hóa trình duyệt
Install-Package PuppeteerSharp # Để chụp ảnh màn hình & trích xuất dữ liệu nâng cao
Install-Package Capsolver.SDK # Để giải quyết CAPTCHA
Ví dụ 1: Trích xuất dữ liệu trang cơ bản
Hãy trích xuất dữ liệu quốc gia từ 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"); // Hãy lịch sự!
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($"Quốc gia: {name}, Thủ đô: {capital}");
}
Điều này in tất cả các quốc gia và thủ đô của chúng. Đơn giản, phải không?
Ví dụ 2: Xử lý JavaScript với Selenium
Một số trang cần một trình duyệt thực sự. Hãy trích xuất dữ liệu trang ví dụ AJAX bằng Selenium:
csharp
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
var options = new ChromeOptions();
options.AddArgument("--headless"); // Chạy nền
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($"Nội dung AJAX: {dynamicContent}");
Ví dụ 3: Giải quyết CAPTCHA với Capsolver
Có CAPTCHA chặn đường bạn không? Sử dụng Capsolver để bỏ qua ReCaptchaV2. Đây là cách:
- Đăng ký Capsolver, lấy khóa API của bạn.
- Sử dụng API để giải quyết 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("Không thể tạo tác vụ: " + 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("Giải quyết thất bại! phản hồi: " + getTaskResponseString);
return null;
}
}
}
}
}
}
Hoạt động liền mạch với Selenium để tự động hóa các biểu mẫu có nhiều CAPTCHA!
Ví dụ 4: Chụp ảnh màn hình với Puppeteer Sharp
Bạn muốn bằng chứng trực quan về việc trích xuất dữ liệu của mình? Chụp ảnh màn hình:
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");
Hoàn hảo để gỡ lỗi hoặc lưu trữ các trang.
Mẹo chuyên nghiệp để trích xuất dữ liệu trang web năm 2025
- Tôn trọng robots.txt: Kiểm tra https://www.scrapethissite.com/robots.txt trước.
- Hạn chế tốc độ: Thêm độ trễ với
Thread.Sleep(2000)để tránh làm quá tải máy chủ. - Xoay vòng User-Agent: Mô phỏng các trình duyệt thực để tránh bị phát hiện.
- Xử lý lỗi: Bao bọc mã trong khối
try-catchđể xử lý sự cố mạng.
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.
Thêm

Cách sử dụng trình duyệt so với Browserbase: Công cụ tự động hóa trình duyệt nào tốt hơn cho các tác nhân AI?
So sánh Browser Use với Browserbase cho tự động hóa bằng trợ lý AI. Khám phá tính năng, giá cả và cách giải CAPTCHAs bằng CapSolver để có luồng công việc mượt mà.

Aloísio Vítor
27-Jan-2026

Cấm IP vào năm 2026: Cách chúng hoạt động và các cách thực tế để vượt qua chúng
Học cách lách chặn IP vào năm 2026 với hướng dẫn toàn diện của chúng tôi. Khám phá các kỹ thuật chặn IP hiện đại và giải pháp thực tế như proxy nhà ở và trình giải CAPTCHA.

Aloísio Vítor
26-Jan-2026

Cách giải Captcha trong Maxun với tích hợp CapSolver
Một hướng dẫn thực tế về việc tích hợp CapSolver với Maxun cho quét web thực tế. Học cách xử lý reCAPTCHA, Cloudflare Turnstile và các trang web được bảo vệ bằng CAPTCHA bằng cách sử dụng quy trình xác thực trước và luồng công việc robot.

Anh Tuan
21-Jan-2026

Cách giải Captcha trong Browser4 với tích hợp CapSolver
Tự động hóa Browser4 tỷ lệ xử lý cao kết hợp với CapSolver để xử lý các thách thức CAPTCHA trong việc trích xuất dữ liệu web quy mô lớn.

Anh Tuan
21-Jan-2026

Các công cụ trích xuất dữ liệu hàng đầu nên sử dụng vào năm 2026 (So sánh toàn diện)
Khám phá các công cụ trích xuất dữ liệu tốt nhất cho năm 2026. So sánh các nền tảng hàng đầu trong lĩnh vực quét web, ETL và AI để tự động hóa quy trình thu thập dữ liệu và AI của bạn.

Aloísio Vítor
21-Jan-2026

Top 7 Công cụ AI cho Tự động hóa Web năm 2026
Khám phá 7 công cụ AI Agent tốt nhất cho tự động hóa web vào năm 2026. Chúng tôi đánh giá CrewAI, MultiOn và nhiều công cụ khác, xếp hạng chúng dựa trên hiệu suất trên web thực tế và độ bền cho các AI agent trong môi trường sản xuất.

Anh Tuan
20-Jan-2026

