C# में वेब स्क्रैपिंग: 2025 में चरण-दर-चरण ट्यूटोरियल

Aloísio Vítor
Image Processing Expert
23-Jan-2025

वेबसाइटों को स्क्रैप करने, CAPTCHA को हैंडल करने और स्क्रीनशॉट लेने के लिए आपका दोस्ताना गाइड!
C# में वेब स्क्रैपिंग क्यों?

C# केवल विंडोज़ ऐप्स या गेम बनाने के लिए ही नहीं है—यह वेब स्क्रैपिंग के लिए भी एक पावरहाउस है! HtmlAgilityPack, Selenium, और Puppeteer Sharp जैसी लाइब्रेरीज़ के साथ, आप डेटा निकाल सकते हैं, इंटरैक्शन को ऑटोमेट कर सकते हैं, और CAPTCHA को भी हल कर सकते हैं (हाँ, सच में)। इस ट्यूटोरियल में, हम अपने प्लेग्राउंड के रूप में https://www.scrapethissite.com/pages/ का उपयोग करेंगे। आइए शुरू करते हैं!
चरण 1: अपना प्रोजेक्ट सेट अप करना

सबसे पहले, एक नया C# कंसोल ऐप बनाएँ। फिर, ये NuGet पैकेज इंस्टॉल करें:
bash
Install-Package HtmlAgilityPack # HTML पार्सिंग के लिए
Install-Package Selenium.WebDriver # ब्राउज़र ऑटोमेशन के लिए
Install-Package PuppeteerSharp # स्क्रीनशॉट और उन्नत स्क्रैपिंग के लिए
Install-Package Capsolver.SDK # CAPTCHA सॉल्विंग के लिए
उदाहरण 1: बेसिक पेज स्क्रैपिंग
आइए 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"); // विनम्र बनें!
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($"देश: {name}, राजधानी: {capital}");
}
यह सभी देशों और उनकी राजधानियों को प्रिंट करता है। सरल, है ना?
उदाहरण 2: Selenium के साथ जावास्क्रिप्ट को हैंडल करना
कुछ पेजों को एक वास्तविक ब्राउज़र की आवश्यकता होती है। आइए AJAX उदाहरण पृष्ठ को Selenium का उपयोग करके स्क्रैप करें:
csharp
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
var options = new ChromeOptions();
options.AddArgument("--headless"); // बैकग्राउंड में चलाएँ
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($"AJAX सामग्री: {dynamicContent}");
उदाहरण 3: Capsolver के साथ CAPTCHA को हल करना
क्या कोई CAPTCHA आपके रास्ते में रुकावट डाल रहा है? ReCaptchaV2 को बायपास करने के लिए Capsolver का उपयोग करें। यहाँ बताया गया है कैसे:
- Capsolver के लिए साइन अप करें, अपनी API कुंजी प्राप्त करें।
- CAPTCHA को हल करने के लिए API का उपयोग करें:
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("कार्य बनाने में विफल: " + 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("हल करने में विफल! प्रतिक्रिया: " + getTaskResponseString);
return null;
}
}
}
}
}
}
CAPTCHA से भरे फॉर्म को स्वचालित करने के लिए Selenium के साथ सहज रूप से काम करता है!
उदाहरण 4: Puppeteer Sharp के साथ स्क्रीनशॉट लेना
क्या आप अपने स्क्रैपिंग का दृश्य प्रमाण चाहते हैं? एक स्क्रीनशॉट कैप्चर करें:
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");
पृष्ठों के डिबगिंग या संग्रहीकरण के लिए बिल्कुल सही।
2025 वेब स्क्रैपिंग के लिए प्रो टिप्स
- robots.txt का सम्मान करें: पहले https://www.scrapethissite.com/robots.txt देखें।
- रेट लिमिटिंग: सर्वरों को ज़्यादा बोझ से बचाने के लिए
Thread.Sleep(2000)के साथ देरी जोड़ें। - User-Agent रोटेशन: पता लगाने से बचने के लिए वास्तविक ब्राउज़रों की नकल करें।
- त्रुटि हैंडलिंग: नेटवर्क समस्याओं के लिए
try-catchब्लॉक में कोड को लपेटें।
अनुपालन अस्वीकरण: इस ब्लॉग पर प्रदान की गई जानकारी केवल सूचनात्मक उद्देश्यों के लिए है। CapSolver सभी लागू कानूनों और विनियमों का पालन करने के लिए प्रतिबद्ध है। CapSolver नेटवर्क का उपयोग अवैध, धोखाधड़ी या दुरुपयोग करने वाली गतिविधियों के लिए करना सख्त वर्जित है और इसकी जांच की जाएगी। हमारे कैप्चा समाधान उपयोगकर्ता अनुभव को बेहतर बनाने के साथ-साथ सार्वजनिक डेटा क्रॉलिंग के दौरान कैप्चा कठिनाइयों को हल करने में 100% अनुपालन सुनिश्चित करते हैं। हम अपनी सेवाओं के जिम्मेदार उपयोग की प्रोत्साहना करते हैं। अधिक जानकारी के लिए, कृपया हमारी सेवा की शर्तें और गोपनीयता नीति पर जाएं।
अधिक

CAPTCHA 2026 हल करने के लिए सबसे अच्छा एक्सटेंशन क्या है?
ऑनलाइन सुरक्षा की लगातार बदलती दुनिया में, कैप्चा चुनौतियां इंटरनेट उपयोगकर्ताओं के लिए एक सामान्य बाधा बन गई हैं।

Sora Fujimoto
12-Dec-2025

लुमिप्रॉक्सी: प्रीमियम प्रॉक्सी वेब स्क्रैपिंग एंड डेटा एकत्रीकरण के लिए
इस लेख में, हम आपको लुमीप्रॉक्सी क्या है और जो वे प्रदान करते हैं उन सेवाओं के बारे में बताएंगे।

Emma Foster
12-Dec-2025

Genlogin: आपके वेब ऑटोमेशन अनुभव को क्रांति लाओ
इस लेख में, हम आपको Genlogin क्या है और सेवाएं जो वे प्रदान करते हैं दिखाएंगे।

Aloísio Vítor
12-Dec-2025

प्रॉक्सीज.आईओ : किसी भी कार्य के लिए व्यक्तिगत प्रॉक्सी
इस लेख में, हम आपको दिखाएंगे कि Proxys.io क्या है और वे कौन सी सेवाएं प्रदान करते हैं।

Nikolai Smirnov
12-Dec-2025

टैबप्रॉक्सी: अच्छी कीमत विदेशी रिजिडेंशियल प्रॉक्सी
इस लेख में, हम आपको टैबप्रॉक्सी क्या है और वे क्या सेवाएं प्रदान करते हैं दिखाएंगे।

Rajinder Singh
12-Dec-2025

IP2World रिजिडेंशियल प्रॉक्सी: नेतृत्व कर रहे वैश्विक आईपी प्रॉक्सी समाधान
इस लेख में, हम आपको IP2World क्या है और वे कौन सी सेवाएं प्रदान करते हैं दिखाएंगे।

Ethan Collins
12-Dec-2025

