2009-06-11 23 views
5

Làm cách nào để sử dụng Regex để trích xuất nội dung từ tài liệu html, có tính đến các thẻ html và body có thể ở dạng chữ hoa, chữ thường hoặc có thể không tồn tại?Regex Extract html Body

+5

Bản sao của http://stackoverflow.com/questions/356340/regular-expression-to-extract-html-body-content? – M4N

Trả lời

9

Không sử dụng cụm từ thông dụng cho mục đích này - sử dụng một cái gì đó như Html Agility Pack.

Đây là một phân tích cú pháp HTML nhanh nhẹn mà xây dựng một đọc/viết DOM và hỗ trợ XPATH đồng bằng hoặc XSLT (bạn thực sự không phải hiểu XPath cũng không XSLT để sử dụng nó, đừng lo lắng. ..). Đó là thư viện mã .NET cho phép bạn phân tích cú pháp "ra khỏi web" các tệp HTML. Trình phân tích cú pháp rất khoan dung với "HTML thực sự không đúng định dạng ". Đối tượng mô hình rất giống với những gì đề xuất System.Xml, nhưng đối với tài liệu HTML (hoặc luồng).

Sau đó, bạn có thể trích xuất body bằng XPATH.

+0

Tôi đồng ý. Tôi đã sử dụng này và phải nói nó nhanh, gọn gàng và sạch sẽ. –

0

này sẽ giúp bạn khá chặt chẽ:

(?is)<body(?:\s[^>]*)>(.*?)(?:</\s*body\s*>|</\s*html\s*>|$) 
+0

Vui lòng cung cấp giải pháp chi tiết. – ShaileshDev

11

Làm thế nào về một cái gì đó như thế này?

Nó chụp mọi thứ giữa các thẻ <body></body> (phân biệt chữ hoa chữ thường do RegexOptions.IgnoreCase) vào một nhóm có tên theBody.

RegexOptions.Singleline cho phép chúng tôi xử lý HTML nhiều dòng dưới dạng một chuỗi.

Nếu HTML không chứa <body></body> thẻ, thuộc tính Success của trận đấu sẽ là sai.

 string html; 

     // Populate the html string here 

     RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Singleline; 
     Regex regx = new Regex("<body>(?<theBody>.*)</body>", options); 

     Match match = regx.Match(html); 

     if (match.Success) { 
      string theBody = match.Groups["theBody"].Value; 
     } 
+0

+1 cho giải pháp sạch sẽ và gọn gàng –

+0

Cảm ơn bạn! Đó là điều tôi phấn đấu. – Darryl

+0

Tuyệt vời, điều đó thực hiện chính xác những gì tôi cần. – Nadjib

Các vấn đề liên quan