मैं C # में HTML स्रोत कैसे डाउनलोड कर सकता हूं


109

मैं HTML स्रोत को c # में वेब पता कैसे दे सकता हूं?

जवाबों:


185

आप WebClient वर्ग के साथ फाइल डाउनलोड कर सकते हैं :

using System.Net;

using (WebClient client = new WebClient ()) // WebClient class inherits IDisposable
{
    client.DownloadFile("http://yoursite.com/page.html", @"C:\localfile.html");

    // Or you can get the file content without saving it
    string htmlCode = client.DownloadString("http://yoursite.com/page.html");
}

ध्यान देना चाहिए: यदि अधिक नियंत्रण की आवश्यकता है, तो HttpWebRequest वर्ग (जैसे प्रमाणीकरण निर्दिष्ट करने में सक्षम होना) को देखें।
रिचर्ड

1
हां, HttpWebRequest आपको अधिक नियंत्रण प्रदान करता है, हालांकि आप क्लाइंट के साथ WebClient के साथ POST अनुरोध कर सकते हैं।
सीएमएस

1
क्या यह WebException को इसके आसपास पकड़ने के लिए विवेकपूर्ण नहीं होगा? शायद यही मान लिया गया था। इस विधि के साथ किसी अन्य अपवाद या त्रुटियों को पकड़ने की आवश्यकता है?
जॉन वॉशम

4
@ जोहानशम - हाँ, यहाँ अपवादों को पकड़ना समझदारी होगी। शुक्र है कि, अधिकांश स्टैकऑवरफ्लो उत्तरदाताओं ने उदाहरण कोड को स्पष्ट और संक्षिप्त रूप में रखा है। उदाहरण कोड को "वास्तविक जीवन" के करीब बनाने से सिर्फ शोर बढ़ेगा।
क्रिस रोजर्स

इश्यू आई फेस यह है कि जब मैं पेजसोर्स डाउनलोड करता हूं और डेटा प्राप्त करता हूं, तो उस वेबसाइट से अन्य भाषा में है, जहां मेरे पेजसोर्स से उन मूल्यों को नहीं मिल रहा है
Rush.2707

40

मूल रूप से:

using System.Net;
using System.Net.Http;  // in LINQPad, also add a reference to System.Net.Http.dll

WebRequest req = HttpWebRequest.Create("http://google.com");
req.Method = "GET";

string source;
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
{
    source = reader.ReadToEnd();
}

Console.WriteLine(source);

19

नवीनतम, सबसे हाल का, आज तक का उत्तर
यह पोस्ट वास्तव में पुराना है (यह 7 साल का है जब मैंने इसका उत्तर दिया था), इसलिए अन्य उत्तरों में से किसी ने भी नए और अनुशंसित तरीके का उपयोग नहीं किया, जो कि HttpClientवर्ग है।


HttpClientनया API माना जाता है और इसे पुराने ( WebClientऔर WebRequest) को बदलना चाहिए

string url = "page url";
HttpClient client = new HttpClient();
using (HttpResponseMessage response = client.GetAsync(url).Result)
{
   using (HttpContent content = response.Content)
   {
      string result = content.ReadAsStringAsync().Result;
   }
}

HttpClientकक्षा का उपयोग करने के तरीके के बारे में अधिक जानकारी के लिए (विशेषकर async मामलों में), आप इस प्रश्न का उल्लेख कर सकते हैं


4
सुझाव: Async विधियों की प्रतीक्षा करें।
Maarten

@Maarten निम्नलिखित लिंक से पता चलता है कि यह कैसे उपयोग करना है async / प्रतीक्षा करें stackoverflow.com/questions/33020657/…
हकन Fıstık

17

आप इसे प्राप्त कर सकते हैं:

var html = new System.Net.WebClient().DownloadString(siteUrl)

छोटा एवं सुन्दर! मुझे आपका सुझाव मिल जाने के बाद मैंने जो अलबहारी का उदाहरण पढ़ा। LINQPad> सहायता> नया क्या है, और कैश के लिए खोजें।
कॉलिन

7
var html = new System.Net.WebClient ()। DownloadString (siteUrl); // अपने ग्राहक को नया करने की जरूरत है!
user1328350

9
कि क्या ? DisposeWebClient
जेडी

11

@ सेमी रास्ता अधिक हाल ही में, एमएस वेबसाइट में सुझाया गया है, लेकिन मुझे हल करने के लिए एक कठिन समस्या थी, दोनों विधि यहां पोस्ट की गई थी, अब मैं सभी के लिए समाधान पोस्ट करता हूं!

समस्या: यदि आप इस तरह एक यूआरएल का उपयोग करते हैं: www.somesite.it/?p=1500किसी मामले में आपको आंतरिक सर्वर त्रुटि (500) मिलती है, हालांकि वेब ब्राउज़र में यह www.somesite.it/?p=1500पूरी तरह से काम करता है।

समाधान: आपको मापदंडों को पूरा करना होगा, कार्य कोड है:

using System.Net;
//...
using (WebClient client = new WebClient ()) 
{
    client.QueryString.Add("p", "1500"); //add parameters
    string htmlCode = client.DownloadString("www.somesite.it");
    //...
}

यहाँ आधिकारिक प्रलेखन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.