Tải bản đầy đủ - 0 (trang)
4 Lược sử và kho lưu trữ trang

4 Lược sử và kho lưu trữ trang

Tải bản đầy đủ - 0trang

chỉ cần lưu trữ vài nghìn trang thì ta có thể sử dụng một hàm băm đơn giản

hơn. Trong một số trường hợp các kho lưu trữ trang cũng có thể dùng để kiểm

tra xem một URL đã được thu thập hay chưa trước khi chuyển đổi sang tên

tập tin 32 ký tự. Trong những trường hợp này có thể bỏ đi cấu trúc dữ liệu

lược sử.

1.5 Cách lấy trang

Để lấy một trang web, chúng ta cần một máy khách HTTP (HTTP client)

gửi một yêu cầu HTTP (HTTP request) cho trang đó và đọc các phản hồi.

Client cần có thời gian trễ để đảm bảo rằng không bị mất thời gian không cần

thiết vào các máy chủ chậm hoặc đọc các trang lớn. Trong thực tế chúng ta

thường hạn chế vấn đề này bằng cách cho client tải về khoảng 10-20 KB đầu

tiên của trang. Client cần bóc tách được tiêu đề phản hồi cho các mã trạng thái

và chuyển hướng.

Kiểm tra lỗi và xử lý ngoài luồng là rất quan trọng trong quá trình lấy

trang vì chúng ta phải đối phó với hàng triệu máy chủ. Trong q trình lấy

trang, trình thu thập khơng thể tự quyết định tài liệu nào được lập chỉ mục và

tài liệu nào không, do đó nó lấy tất cả những gì có thể. Thậm chí dù xác định

được tài liệu vơ ích thì nó cũng đã bỏ ra một chi phí đáng kể cho hoạt động

thu thập.

1.6 Bóc tách trang

Khi một trang đã được lấy, chúng ta cần phân tích nội dung của nó để

trích xuất thơng tin, lấy ra các URL để mở ra hướng đi tiếp theo của các trình

thu thập.

Phân tích nội dung có thể là q trình khai thác hyperlink/URL đơn giản

hoặc nó có thể bao gồm q trình phức tạp hơn như lọc nội dung HTML để

phân tích thành mơ hình thẻ HTML dạng cây (HTML tag tree). Phân tích nội

dung cũng có thể bao gồm các bước chuyển đổi URL được trích xuất thành

dạng tiêu chuẩn, loại bỏ những từ ở phần đầu nội dung của trang và lấy các từ

 14 



còn lại ở phần thân.





Tiêu chuẩn trích xuất URL

Hàm bóc tách HTML có sẵn cho nhiều ngôn ngữ khác nhau. Chúng cung

cấp các chức năng để dễ dàng xác định các tag HTML và cặp các giá trị thuộc

tính liên quan trong một tài liệu HTML. Để trích xuất siêu liên kết URL từ

một trang Web, chúng ta có thể sử dụng các hàm bóc tách để tìm thẻ anchor

(thẻ ) và lấy các giá trị các thuộc tính href liên quan. Trước tiên chúng ta

phải chuyển đổi tất cả các đường dẫn URL sang đường dẫn URL tuyệt đối vì

có nhiều đường dẫn URL viết khơng đúng quy chuẩn có thể cùng dẫn tới một

trang. Điều này là quan trọng để tránh lấy một trang nhiều lần. Dưới đây là

một số bước điển hình được sử dụng trong thủ tục chuẩn hóa URL:



-



Chuyển đổi giao thức và tên máy chủ thành dạng chữ thường.

Loại bỏ phần “tham khảo” trong URL.

Thực hiện mã hóa URL cho một vài những ký tự thường sử dụng như ’~’.



-



Điều này sẽ tránh được việc thu thập lại 1 trang.

Đối với một vài URL, thêm ký tự ‘/’.

Sử dụng để nhận ra các trang web mặc định. Những tên file như index.html

hoặc index.htm có thể được loại bỏ trong đường dẫn URL với thừa nhận rằng



-



đó là những trang mặc định.

Loại bỏ ‘..’ và đường dẫn trước nó trong phần URL.

Điều quan trọng là đảm bảo tính nhất quán trong khi áp dụng các luật

chuẩn hóa. Có thể hai luật khác nhau lại cho kết quả tốt như nhau miễn là ta

áp dụng các luật chuẩn hóa URL một cách nhất qn.





Mơ hình thẻ HTML dạng cây

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ày. Phân tích cấu trúc DOM giúp trình thu thập có thể duyệt các node



 15 



trên cây này và chỉ lấy ra phần nội dung mà nó cần. Hình dưới đây cho ta thấy

một mơ hình cây tương ứng với một mã nguồn URL



Hình 1.1 Mơ hình cây tương ứng với một mã nguồn HTML

Có thể thấy thẻ 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ây.

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ẻ và đều là một). Các phần tử HTML cần có một thẻ

mở và một thẻ đóng, tuy nhiên điều này khơng phải ln ln đúng, có nhiều

phần tử khơng cần thẻ đóng, ví dụ các thẻ
,
  • . Ngồ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).



     16 



    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 ban đầu thành các tài liệu HTML

    tiêu chuẩn, q 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ẻ 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ần vă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.

    1.7 Các kỹ thuật thu thập web

    Trong phần này chúng ta sẽ thảo luận về một số kỹ thuật thu thập dữ liệu

    bao gồm:

    - Kỹ thuật thu thập dữ liệu theo chiều sâu.

    - Kỹ thuật thu thập dữ liệu theo chiều rộng.

    - Kỹ thuật thu thập dữ liệu theo ngẫu nhiên.

    Như đã nói ở phần trước về bản chất, q trình thu thập web chính là q

    trình duyệt đệ quy một đồ thị. Các web được xem như một đồ thị với các

    trang là các đỉnh (node) và các siêu liên kết là các cạnh. Chính vì thế các kỹ

    thuật thu thập dữ liệu cũng được xây dựng dựa trên các thuật tốn tìm kiếm

    trên đồ thị. Các thuật tốn tìm kiếm trên đồ thị bao gồm:

    - Tìm kiếm theo chiều sâu (Depth-First Search): Là thuật tốn tìm kiếm

    bằng cách mở rộng nút đồ thị theo chiều sâu.

    - Tìm kiếm theo chiều rộng (Breath-First Search): Là thuật tốn tìm

    kiếm bằng cách mở rộng nút đồ thị theo chiều rộng.

    - Tìm kiếm theo lựa chọn tốt nhất (Best-First Search): Là một thuật tốn

    tìm kiếm tối ưu bằng cách mở rộng nút hứa hẹn nhất theo một quy tắc nào đó.

    1.7.1 Kỹ thuật thu thập dữ liệu theo chiều sâu

    Quá trình thực hiện:

     17 



    Bước 1: Lấy URL đầu tiên trong danh sách (frontier) để thu thập.

    - Nếu có qua bước 2.

    - Nếu không qua bước 5.

    Bước 2: Lấy trang tương ứng với URL qua HTTP.

    - Nếu có qua bước 3.

    - Nếu khơng quay lại bước 1.

    Bước 3: Kiểm tra xem trang này đã được được thăm chưa?

    - Nếu chưa qua bước 4.

    - Nếu rồi quay lại bước 1.

    Bước 4: Đánh dấu trang này đã được thăm. Bóc tách trang và tìm các

    liên kết có trong trang này.

    - Nếu có, thêm các liên kết vào đầu danh sách. Quay lại bước 3.

    - Nếu không, quay lại bước 1.

    Bước 5: Kết thúc.

    1.7.2 Kỹ thuật thu thập dữ liệu theo chiều rộng

    Quá trình thực hiện:

    Bước 1: Lấy URL đầu tiên trong danh sách để thu thập.

    - Nếu có qua bước 2.

    - Nếu khơng qua bước 5.

    Bước 2: Lấy trang tương ứng với URL qua HTTP.

    - Nếu có qua bước 3.

    - Nếu khơng quay lại bước 1.

    Bước 3: Kiểm tra xem trang này đã được được thăm chưa?

    - Nếu chưa qua bước 4.

    - Nếu rồi quay lại bước 1.

    Bước 4: Đánh dấu trang này đã được thăm. Bóc tách trang và tìm các

    liên kết có trong trang này.

    - Nếu có, thêm các liên kết vào cuối danh sách. Quay lại bước 3.

     18 



  • Tài liệu bạn tìm kiếm đã sẵn sàng tải về

    4 Lược sử và kho lưu trữ trang

    Tải bản đầy đủ ngay(0 tr)

    ×