[C#] Lấy source trang web

Các thủ thuật liên quan đến xử lý chuỗi và thời gian

Moderators: tungcan5diop, QUANITGROBEST

Post Reply
User avatar
NoBi
Quản trị
Quản trị
Posts: 970
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 58 times
Been thanked: 68 times
Contact:

[C#] Lấy source trang web

Post by NoBi »

Thủ thuật: Lấy source trang web
Tác giả: Sưu tầm
Mô tả: Return HTML Page Source From Web URL
---------------------------------------------------
Return HTML Page Source From Web URL in C#

Code: Select all

using System.Net;using System.Xml;using System.IO;

Code: Select all

             string url = "http://caulacbovb.com";             HttpWebRequest myWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);            myWebRequest.Method = "GET";            // make request for web page            HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();            StreamReader myWebSource = new StreamReader(myWebResponse.GetResponseStream());            string myPageSource = myWebSource.ReadToEnd();            myWebResponse.Close();            // Thêm textboxt vào, gở comment để test            //this.textBox1.Text = myPageSource;
Hoặc:

Code: Select all

         private string ReadHTMLCode(string URL)        {            try            {                WebClient webClient = new WebClient();                byte[] reqHTML;                reqHTML = webClient.DownloadData(URL);                UTF8Encoding objUTF8 = new UTF8Encoding();                return objUTF8.GetString(reqHTML);            }            catch (Exception Ex)            {                MessageBox.Show(Ex.Message,"Unable to open file from URL");            }            return "error";        }  
Gọi hàm :

Code: Select all

this.textBox1.Text = ReadHTMLCode("http://caulacbovb.com");
:>
lilik48
Posts: 3
Joined: Fri 11/04/2008 2:55 pm

Re: [C#] Lấy source trang web

Post by lilik48 »

Bạn NoBi cho mình hỏi với, máy mình nối thẳng đường dây ra ngoài Internet thì source trên chạy bình thường, nhưng khi mang nó đến công ty máy mình phải đi qua một con máy chủ thì source lại không chạy được nữa và có thông báo:
The remote server returned an error: (407) Proxy Authentication Required.
Bạn chỉ rõ cho mình với, cảm ơn
User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: [C#] Lấy source trang web

Post by anhtuyenbk »

Quá rõ ràng rồi còn gì "Proxy Authentication Required. " bạn phải có quyền đăng nhập mới lấy được.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang
lilik48
Posts: 3
Joined: Fri 11/04/2008 2:55 pm

Re: [C#] Lấy source trang web

Post by lilik48 »

Bây giờ mình có account rồi thì làm như nào hả bạn
User avatar
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 1641
Joined: Wed 16/04/2008 11:25 am
Location: Chợ Lách - Bến Tre
Been thanked: 32 times
Contact:

Re: [C#] Lấy source trang web

Post by clarkkent »

Vậy trong VB.NET thì vấn đề lấy source làm như thế nào vậy các bác... :D
Mình đang cần lắm... :((
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...
User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: [C#] Lấy source trang web

Post by anhtuyenbk »

Xài cách này có điểm dở là khi chạy thì Form sẽ bị đơ, nhìn mất cảm tình.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang
violetlotous
Thành viên tích cực
Thành viên tích cực
Posts: 101
Joined: Wed 23/04/2008 9:58 am
Has thanked: 8 times
Been thanked: 1 time

Re: [C#] Lấy source trang web

Post by violetlotous »

anhtuyenbk ơi, vậy có cách nào để lúc nó đang chạy, Form ko bị đơ không
User avatar
NoBi
Quản trị
Quản trị
Posts: 970
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 58 times
Been thanked: 68 times
Contact:

Re: [C#] Lấy source trang web

Post by NoBi »

Bạn dùng thêm Thread:
  1.         private string loadData()
  2.         {
  3.             using (WebClient client = new WebClient())
  4.             {
  5.                 //client.DownloadFile("http//caulacbovb.com", @"C\localfile.html");
  6.                 string htmlCode = client.DownloadString("http//caulacbovb.com");
  7.                 return htmlCode;
  8.             }
  9.         }
  10.  
  11.         private void button1_Click(object sender, EventArgs e)
  12.         {
  13.             textBox1.Text = "loading..............";
  14.             Thread t = new Thread(() =>
  15.             {
  16.                 string data = loadData();
  17.                 this.Invoke((MethodInvoker)delegate {
  18.                     textBox1.Text = data;
  19.                 });
  20.             });
  21.             t.Start();
  22.         }
:>
violetlotous
Thành viên tích cực
Thành viên tích cực
Posts: 101
Joined: Wed 23/04/2008 9:58 am
Has thanked: 8 times
Been thanked: 1 time

Re: [C#] Lấy source trang web

Post by violetlotous »

Thanks bạn, nếu sử dụng như bạn thì form không bị đơ, nhưng có vấn đề phát sinh là mình sẽ lấy dữ liệu download đó xử lý. nên mình thêm t.Join() thì form vẫn sẽ bị đơ
User avatar
NoBi
Quản trị
Quản trị
Posts: 970
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 58 times
Been thanked: 68 times
Contact:

Re: [C#] Lấy source trang web

Post by NoBi »

Cái ví dụ đó mình làm mẫu thôi. Còn muốn sử dụng với mục đích gì thì bạn phải tự tính toán xử lý tiếp (dùng thread tương tự hoặc cách nào đó cho nó đừng đơ). t.Join() là chờ cho thread chạy xong mới chạy tiếp thì bảo sao kg đơ?! nó bằng với việc kg chạy thread.
Nếu có thắc mắc về việc dùng thread thì tạo chủ đề khác nhé. Chủ đề này không bàn tới thread nữa.
:>
Post Reply

Return to “[.NET] Chuỗi và Thời gian”