Các trình thu thập có thể lấy ra giá trị của các URL hoặc một nội dung bất kỳ trong
một trang web bằng cách kiểm tra phạm vi thẻ tag HTML chứa chúng. Để làm được điều này, trình thu thập có thể sử dụng mô hình thẻ HTML dạng cây và phân tích cấu trúc DOM (Document Oject Model) của mô hình nàỵ Phân tích cấu trúc DOM giúp trình thu thập có thể duyệt các node trên cây này và chỉ lấy ra phần nội dung mà nó cần. Hình 2.3 cho ta thấy một mô hình cây tương ứng với một mã nguồn URL.
Hình 2.3: Mô hình cây tương ứng với một mã nguồn URL
Có thể thấy thẻ <html> là gốc của cây, các thẻ bên trong nó là các node mở rộng, và dữ liệu text là lá của câỵ
Trên thực tế, không phải văn bản HTML nào cũng được viết đúng quy chuẩn như ví dụ trên. HTML là ngôn ngữ không phân biệt chữ hoa hay chữ thường (hai thẻ <tr> và <TR> đều là một). Các phần tử HTML cần có một thẻ mở và một thẻ đóng, tuy
29
nhiên điều này không luôn luôn đúng, có nhiều phần tử không cần thẻ đóng, ví dụ các thẻ <br>, <hr> và <li>. Ngoài ra khi lồng nhau, các phần tử HTML cũng không cần thiết phải lồng nhau theo đúng thứ tự (tức là thẻ nào mở trước thì phải đóng sau). Ví dụ sau là hợp lệ trong HTML:
<p> Cộng hòa xã hội chủ nghĩa Việt Nam <i><br>Độc lập tự do hạnh phúc</p></i>
Vì vậy trước khi lập mô hình cây cho một mã nguồn HTML chúng ta cần một quá trình chuyển đổi các tài liệu HTML tồi thành các tài liệu HTML tiêu chuẩn, quá trình này gọi là chuẩn hóa các trang HTML. Quá trình này bao gồm việc chuyển đổi các thẻ sang dạng chữ thường, chèn thêm các thẻ bị và sắp xếp lại thứ tự các thẻ trong tài liệu HTML. Chuẩn hóa trang HTML là rất cần thiết để việc lập mô hình cây được chính xác. Nếu như trình thu thập chỉ cần lấy các liên kết hoặc văn bản hoặc một phầnvăn bản thì có thể ta không cần sử dụng tới mô hình cây mà chỉ cần sử dụng kỹ thuật bóc tách HTML đơn giản. Trình bóc tách như vậy cũng được hỗ trợ trong nhiều ngôn ngữ lập trình.