
Aloísio Vítor
Image Processing Expert

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

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

सबसे पहले, एक नया C# कंसोल ऐप बनाएँ। फिर, ये NuGet पैकेज इंस्टॉल करें:
Install-Package HtmlAgilityPack # HTML पार्सिंग के लिए
Install-Package Selenium.WebDriver # ब्राउज़र ऑटोमेशन के लिए
Install-Package PuppeteerSharp # स्क्रीनशॉट और उन्नत स्क्रैपिंग के लिए
Install-Package Capsolver.SDK # CAPTCHA सॉल्विंग के लिए
आइए https://www.scrapethissite.com/pages/simple/ से देश का डेटा स्क्रैप करें।
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}");
}
यह सभी देशों और उनकी राजधानियों को प्रिंट करता है। सरल, है ना?
कुछ पेजों को एक वास्तविक ब्राउज़र की आवश्यकता होती है। आइए AJAX उदाहरण पृष्ठ को Selenium का उपयोग करके स्क्रैप करें:
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}");
क्या कोई CAPTCHA आपके रास्ते में रुकावट डाल रहा है? ReCaptchaV2 को बायपास करने के लिए Capsolver का उपयोग करें। यहाँ बताया गया है कैसे:
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 के साथ सहज रूप से काम करता है!
क्या आप अपने स्क्रैपिंग का दृश्य प्रमाण चाहते हैं? एक स्क्रीनशॉट कैप्चर करें:
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");
पृष्ठों के डिबगिंग या संग्रहीकरण के लिए बिल्कुल सही।
Thread.Sleep(2000) के साथ देरी जोड़ें।try-catch ब्लॉक में कोड को लपेटें।अनुमोदित डेटा वर्कफ़्लो के लिए वेब स्क्रैपिंग कैप्चा गाइड: चुनौति प्रकार, API का निपटारा, प्रॉक्सी संगति, पुनः प्रयास और जिम्मेदार उपयोग सीखें।

अटोमेशन के लिए तेज CAPTCHA समाधान एपीआई: टोकन वर्कफ़्लो की तुलना करें, समर्थित चुनौतियां, लैटेंसी जांच, और CapSolver एकीकरण के लिए जिम्मेदार।
