Rút trích nội dung từ một link website bất kỳ trong ASP.NET

Rút trích nội dung từ một link website bất kỳ trong ASP.NET

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

 

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
9 sai lầm của Microsoft trong năm 2011

9 sai lầm của Microsoft trong năm 2011

Microsoft vừa trải qua một năm khó khăn khi phải cạnh tranh khốc liệt trên nhiều mảng thị trường. Dưới đây là một số sai lầm khiến Microsoft lún sâu vào thất bại.

Trứng Phục Sinh Ngay Trên Nút “I’m Feeling Lucky”

Trứng Phục Sinh Ngay Trên Nút “I’m Feeling Lucky”

Nhưng không phải ai cũng biết rằng Google đã giấu một quả trứng Phục sinh vào nút bấm tưởng chừng bỏ đi đó.

 

Những thay đổi trong cấu trúc của CMS Drupal 7

Những thay đổi trong cấu trúc của CMS Drupal 7

Drupal 7 dường như lột xác so với các phiên bản trước đây, trong những phiên bản trước, Drupal đi theo hướng viết các functions theo các cấu trúc module riêng lẻ nhưng giờ đã khác, trong phiên bản Drupal 7 này thì cấu trúc nó theo hướng lai CMS-Framework

Công ty diệt chuột T&C

 

Diet con trung