আমি কীভাবে সি # তে এইচটিএমএল উত্স ডাউনলোড করতে পারি?


109

আমি কীভাবে এইচটিএমএল উত্সকে সি # তে একটি ওয়েব ঠিকানা দেওয়া পারি?

উত্তর:


185

আপনি ওয়েবক্লিনেন্ট শ্রেণীর সাহায্যে ফাইলগুলি ডাউনলোড করতে পারেন :

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 আপনাকে আরও নিয়ন্ত্রণ দেয়, যদিও আপনি ক্লায়েন্ট ব্যবহার করে ওয়েবক্লিনেন্টের সাথে POST অনুরোধগুলি করতে পারেন p আপলোডডাটা (uriString, "পোষ্ট", পোস্টপ্যারামসবাইটআরে);
— সিএমএস

1
এটিকে ঘিরে ওয়েবএক্সসেপশনকে ধরা কি বুদ্ধিমানের কাজ হবে না? সম্ভবত এটি ধরে নেওয়া হয়েছিল। অন্য কোনও ব্যতিক্রম বা ত্রুটি এই পদ্ধতির সাথে ধরা দরকার?
— জন ওয়াশাম

4
@ জোহান ওয়াশাম - হ্যাঁ, এখানে ব্যাতিক্রমগুলি গ্রহণ করা বুদ্ধিমানের কাজ হবে। তবে ধন্যবাদ, বেশিরভাগ স্ট্যাকওভারফ্লো উত্তরদাতারা উদাহরণ কোডটি যথাসম্ভব পরিষ্কার এবং সংক্ষিপ্তভাবে রাখেন। "রিয়েল লাইফ" এর কাছাকাছি উদাহরণ কোড তৈরি করা কেবল গোলমাল যোগ করবে।
— ক্রিস রজার্স

আমার মুখোমুখি হওয়া বিষয়টি হ'ল আমি যখন পেজসোর্স ডাউনলোড করি এবং ডেটা পাই তখন যদি সেই ওয়েবসাইটটি অন্য পৃষ্ঠায় থাকে তবে আমার পৃষ্ঠাগুলি সেই মানগুলি পাচ্ছে না
— রাশ ২7070০

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শ্রেণি is


HttpClientনতুন এপিআই হিসাবে বিবেচনা করা হয় এবং এটি পুরানো ( 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ক্লাসটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য (বিশেষত অ্যাসিঙ্ক ক্ষেত্রে) আপনি এই প্রশ্নটি উল্লেখ করতে পারেন


4
পরামর্শ: অ্যাসিঙ্ক পদ্ধতিগুলির জন্য অপেক্ষা করুন।
— মার্টেন

নিম্নলিখিত লিঙ্ক শো @Maarten এই সঙ্গে ASYNC / অপেক্ষায় রয়েছেন কীভাবে ব্যবহার করবেন তা stackoverflow.com/questions/33020657/...
— Hakan Fıstık

17

আপনি এটি দিয়ে পেতে পারেন:

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

স্বল্প ও মধুর! জো আলবাহারীর উদাহরণটি পড়ার পরে আমি আপনার পরামর্শটি পেয়েছি। লিনকপ্যাড> সহায়তা> নতুন কী, এবং ক্যাশে অনুসন্ধান করুন।
— কলিন

7
var html = new System.Net.WebClient ()। ডাউনলোড স্ট্রিং (সাইটউআরএল); // আপনার ক্লায়েন্ট নতুন প্রয়োজন!
— ব্যবহারকারী 1328350

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");
    //...
}

এখানে সরকারী ডকুমেন্টেশন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.