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

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

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

23-Jan-2025

वेबसाइट स्क्रैपिंग, C#, कैप्सॉल्वर

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


C# में वेब स्क्रैपिंग क्यों?

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


चरण 1: अपना प्रोजेक्ट सेट अप करना

सबसे पहले, एक नया C# कंसोल ऐप बनाएँ। फिर, ये NuGet पैकेज इंस्टॉल करें:

bash Copy
Install-Package HtmlAgilityPack        # HTML पार्सिंग के लिए
Install-Package Selenium.WebDriver     # ब्राउज़र ऑटोमेशन के लिए
Install-Package PuppeteerSharp         # स्क्रीनशॉट और उन्नत स्क्रैपिंग के लिए
Install-Package Capsolver.SDK          # CAPTCHA सॉल्विंग के लिए

उदाहरण 1: बेसिक पेज स्क्रैपिंग

आइए 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"); // विनम्र बनें!
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 Copy
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 का उपयोग करें। यहाँ बताया गया है कैसे:

  1. Capsolver के लिए साइन अप करें, अपनी API कुंजी प्राप्त करें।
  2. CAPTCHA को हल करने के लिए API का उपयोग करें:
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("कार्य बनाने में विफल: " + 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 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");

पृष्ठों के डिबगिंग या संग्रहीकरण के लिए बिल्कुल सही।


2025 वेब स्क्रैपिंग के लिए प्रो टिप्स

  1. robots.txt का सम्मान करें: पहले https://www.scrapethissite.com/robots.txt देखें।
  2. रेट लिमिटिंग: सर्वरों को ज़्यादा बोझ से बचाने के लिए Thread.Sleep(2000) के साथ देरी जोड़ें।
  3. User-Agent रोटेशन: पता लगाने से बचने के लिए वास्तविक ब्राउज़रों की नकल करें।
  4. त्रुटि हैंडलिंग: नेटवर्क समस्याओं के लिए try-catch ब्लॉक में कोड को लपेटें।

अनुपालन अस्वीकरण: इस ब्लॉग पर प्रदान की गई जानकारी केवल सूचनात्मक उद्देश्यों के लिए है। CapSolver सभी लागू कानूनों और विनियमों का पालन करने के लिए प्रतिबद्ध है। CapSolver नेटवर्क का उपयोग अवैध, धोखाधड़ी या दुरुपयोग करने वाली गतिविधियों के लिए करना सख्त वर्जित है और इसकी जांच की जाएगी। हमारे कैप्चा समाधान उपयोगकर्ता अनुभव को बेहतर बनाने के साथ-साथ सार्वजनिक डेटा क्रॉलिंग के दौरान कैप्चा कठिनाइयों को हल करने में 100% अनुपालन सुनिश्चित करते हैं। हम अपनी सेवाओं के जिम्मेदार उपयोग की प्रोत्साहना करते हैं। अधिक जानकारी के लिए, कृपया हमारी सेवा की शर्तें और गोपनीयता नीति पर जाएं।

अधिक

क्लाउडफ़्लेर त्रुटि 1006, 1007, 1008
क्लाउडफ़्लेयर त्रुटि 1006, 1007, 1008 हल करने का समाधान | कैसे ठीक करें

क्लाउडफ़ेयर त्रुटि 1006, 1007 या 1008 के साथ परेशान हैं? इन एक्सेस अस्वीकृतियों को हल करने और अपने वेब क्रॉलिंग अनुभव को बढ़ाने के लिए व्यावहारिक समाधान सीखें।

Cloudflare
Logo of CapSolver

Nikolai Smirnov

05-Dec-2025

AI-LLM: भविष्य का समाधान रिस्क नियंत्रण के लिए छवि पहचान एवं CAPTCHA हल करना
एआई-एलएलएम: जोखिम नियंत्रण छवि संज्ञान और कैप्चा हल करने के लिए भविष्य का समाधान

एक गहरा अध्ययन कैसे बड़े भाषा मॉडल ग्राफिकल कैप्चा हल करते हैं, शून्य-शॉट तर्क और CNN की यथार्थता के संयोजन के माध्यम से आधुनिक जोखिम नियंत्रण के लिए।

Logo of CapSolver

Rajinder Singh

05-Dec-2025

कैप्चा कैसे हल करें जब वेब स्क्रैपिंग करते हैं Scrapling और CapSolver के साथ
कैप्चा कैसे हल करें जब वेब स्क्रैपिंग करते हैं Scrapling और CapSolver के साथ

स्क्रैपलिंग + कैपसॉल्वर रीकैपचा v2/v3 और क्लाउडफ़्लेयर टर्नस्टाइल बायपास के साथ स्वचालित स्क्रैपिंग सक्षम करता है।

web scraping
Logo of CapSolver

Rajinder Singh

05-Dec-2025

सेलेनियम में यूजर-एजेंट बदलें
यूजर-एजेंट बदलें | सेलेनियम में चरण एवं शीर्ष विधियां

Selenium में User Agent बदलना बहुत सारे वेब स्क्रैपिंग कार्यों के लिए एक महत्वपूर्ण कदम है। यह ऑटोमेशन स्क्रिप्ट को एक सामान्य ब्राउज़र के रूप में छिपाने में मदद करता है...

The other captcha
Logo of CapSolver

Lucas Mitchell

05-Dec-2025

कैपसॉल्वर एक्सटेंशन के साथ क्लाउडफ़्लेयर टर्नस्टाइल को हल करने के लिए `क्रियाकलाप` के लिए आवश्यक है कैसे निर्धारित करें
कैसे पहचानें कि `कार्य` क्लाउडफ़ेयर टर्नस्टाइल को हल करने के लिए आवश्यक है कैपसॉल्वर एक्सटेंशन के साथ

क्लाउडफ़्लेयर टर्नस्टाइल प्रभावी कैप्चा हल करने के लिए कार्रवाई की पहचान सीखें। Capsolver के उपकरणों और तकनीकों का उपयोग करने के लिए हमारे चरण-दर-चरण गाइड का अनुसरण करें।

Cloudflare
Logo of CapSolver

Rajinder Singh

05-Dec-2025

9प्रॉक्सी
9Proxy की शक्ति की खोज करें: व्यापक समीक्षा

इस लेख में, हम आपको 9proxy क्या है और जो वे प्रदान करते हैं सेवाएं दिखाएंगे।

web scraping
Logo of CapSolver

Rajinder Singh

04-Dec-2025