Kiến thức

Tìm kiếm
Hỗ trợ trực tuyến
Hỗ trợ trực tuyến - toankhoa1008
Mr.Khoa - 0909 017 015
Khuyến mãi
Khuyến mãi
Đối tác
Kiến thức thiết kế
Rút trích nội dung từ một link website bất kỳ trong ASP.NET
8/19/2012 12:33:08 PM
Bạn thiết kế một trang site tin tức đòi hỏi công việc cập nhật tin tức tự động một cách thường xuyên? Nhưng bạn không có đủ nhân lực và thời gian để làm công việc này một cách thủ công? WEBXAULA sẽ hướng dẫn các bạn cách lấy nội dung một website một cách tự động.
Rút trích nội dung từ một link website bất kỳ trong ASP.NET

 Để lấy được nội dung website thông qua một URL bất kì. Việc đầu tiên ta phải lấy về được toàn bộ html của link đó, sau đó phân tích chuỗi html đó, dựa vào các id hoặc name của div, table, span, v.v.... mà ta sẽ lấy được nội dung cần lấy. Để làm được việc này các bạn cần có một chút kiến thức về RegularExpressions.

 

Do mỗi website có cấu trúc khác nhau nên cách trích lọc và phân tích html cũng khác nhau. Ở đây tôi sẽ ví dụ cho các bạn lấy nội dung tin tức từ website vnexpress.net. Cụ thể tôi sẽ lấy nội dung của link sau: http://vnexpress.net/gl/xa-hoi/2012/08/phu-nu-chet-loa-the-trong-khach-san/

 

Đầu tiên, các bạn add thêm 4 thư viện sau:

 

 

using System.Text.RegularExpressions;
using System.Text;
using System.Net;
using System.IO;

 

 
Hàm lấy html của link bất kì:
 
public string GetWebContent(string strLink)
    {
        string strContent = "";
        try
        {
            WebRequest objWebRequest = WebRequest.Create(strLink);
            objWebRequest.Credentials = CredentialCache.DefaultCredentials;
            WebResponse objWebResponse = objWebRequest.GetResponse();
            Stream receiveStream = objWebResponse.GetResponseStream();
            StreamReader readStream = new StreamReader(receiveStream, System.Text.Encoding.UTF8);
            strContent = readStream.ReadToEnd();
            objWebResponse.Close();
            readStream.Close();
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
        return strContent;
    }
 
 
Bây giờ công việc tiếp theo là lấy ra từng thành phần mà bạn muốn lấy. 
 
Phân tích lấy phần tiêu đề: Các bạn viết hàm sau:
 
public string LayTieuDe(string Content)
    {
        string pattern = "<H1 class=Title>[^<]+";
        Regex Title = new Regex(pattern);
        Match m = Title.Match(Content);
        if (m.Success)
            return m.Value.Substring(16, m.Value.Length - 16);
        return "";
    }
 
Phân tích lời phần mô tả: Hàm được viết tương tự như sau:
 
public string LayMoTa(string Content)
    {
        string pattern = "<H2 class=Lead>[^<]+";
        Regex Title = new Regex(pattern);
        Match m = Title.Match(Content);
        if (m.Success)
            return m.Value.Substring(15, m.Value.Length - 15);
        return "";
    }
 
 
Phân tích lấy phần nội dung. Các bạn tạo hàm sau:
 
public string LayNoiDung(string Content)
    {
        string pattern = "<P class=Normal>[^~]+";
        Regex Title = new Regex(pattern);
        Match m = Title.Match(Content);
        if (m.Success)
            return m.Value.Substring(16, m.Value.Length - 16).Replace("/Files", "http://vnexpress.net/Files").Replace("/gl", "http://vnexpress.net/gl");
        return "";
    }
 
 
Khi nào cần sử dụng thì bạn chỉ cần gọi các hàm này ra. VD:
 
lblThongBao.Text = LayTieuDe(GetWebContent("http://vnexpress.net/gl/xa-hoi/2012/08/phu-nu-chet-loa-the-trong-khach-san/"))
            + "<br/><br/>"
            + LayMoTa(GetWebContent("http://vnexpress.net/gl/xa-hoi/2012/08/phu-nu-chet-loa-the-trong-khach-san/"))
            + "<br/><br/>"
            + LayNoiDung(GetWebContent("http://vnexpress.net/gl/xa-hoi/2012/08/phu-nu-chet-loa-the-trong-khach-san/"))
            + "";
 
 
Đây là bước đầu căn bản để lấy nội dung một link bất kỳ, các bạn có thể dựa vào để phát triển thêm lấy các phần nâng cao hơn. Chúc các bạn thành công

 

Cám ơn các bạn đã đọc bài viết này. Nếu bạn cảm thấy bài viết này hay và có ích thì hãy ấn +1 hoặc like để khích lệ tác giả bài viết nhé, và nếu được thì share cho bạn bè cùng đọc. Thanks ^o^

Bài viết liên quan


4/22/2012 2:11:39 PM
Một trong những bước quan trọng khi tiến hành tối ưu hoá website là sử dụng URL thân thiện với google. Trong bài viết này WEBXAULA sẽ giới t [....]
4/20/2012 11:49:27 AM
Trong các website thường có phần liên hệ để người dùng liên hệ với quản lý website đó. Trong bài viết này, WEBXAULA làm form liên hệ như WEB [....]
4/20/2012 11:17:54 AM
Khi xây dựng một website, nhiều khi bạn phải thực hiện lồng các control để hiển thị dữ liệu, vd như hiển thị các bài viết theo đúng danh mục [....]
4/17/2012 4:45:36 PM
reCaptcha là 1 dịch vụ giúp chúng ta có thể chống lại bot, và những submit không phải do con người (do engine). Bài viết này sẻ hướng dẫn cá [....]
4/17/2012 4:38:54 PM
Bạn nhận một đơn đặt hàng thiết kế website yêu cầu có một đồng hồ thời gian đếm ngược (VD: đấu giá, thời gian khuyến mãi, v.v...) nhưng làm [....]
4/17/2012 4:29:58 PM
Có khá nhiều cách để export dữ liệu ra file excel. WEBXAULA sẽ đơn cử một phương pháp khá đơn giản (không cần phải chèn thêm thư viện bên ng [....]
3/6/2012 6:34:18 PM
Không có một bí quyết nào về việc đẩy mạnh doanh số bán hàng qua Internet. Bạn thu hút sự chú ý của đông đảo mọi người và gia tăng các khách [....]
1 2
Doanh Nghiệp Tư Nhân TM DV TAHI TAKA
Văn phòng: G7, ấp Mỹ Hoà 2, xã Xuân Thới Đông, huyện Hóc Môn, TPHCM
Điện thoại: (84-8) 6250 1751 - 0909.017.015
Email: contact@webxaula.com - ktwebpro@gmail.com
Website: www.webxaula.com