khả năng thực hiện các chức năng HTTP cơ bản như: GET, POST, HTTP Auth …
1.9.3.2 Advanced Crawler
DESSBrowser
Advanced Crawler sử dung DESSBrowser - một browser giả lập được viết bằng java sử dụng thư viện HTMLUnit, cĩ khả năng thực hiện các đoạn mã javascript, activeX, java applet…
Khi được cung cấp một url kèm theo các options mơ tả các hoạt đơng, Advanced Crawler sẽ tạo một fileInput chứa các hoạt động đĩ, sau đĩ sẽ gọi DESSBrowser với thơng số là input và output, DESSBrowser sẽ thực hiện các action được truyền qua và lấy nội dung cuối cùng ghi vào file output, cũng là file chứa nội dung trang Web cần lấy.
DESSBrowser nhận 2 thơng số là tập tin đầu vào và tập tin đầu ra. java –jar DESSBrowser input.txt output.html
Khi thực thi, DESSBrowser sẽ tiến hành đọc nội dung của file input, thực hiện các action được miêu tả trong đĩ. Sau đĩ ghi kết quả cuối cùng ra file output.
Cấu trúc file input
url trang web action block action block …
Mỗi action block được miêu tả bằng 3 thành phần nằm trên 3 dịng riêng biệt:
• Action Type: loại action. Hiện chương trình hỗ trợ hai loại action cơ bản, tương tự như trong cấu hình XML:
- Type: thực hiện thao tác nhập giá trị value vào trong target
- Click: thực hiện thao tác click chuột vào target. Value của Action lúc này chính là option của thao tác:
o Nếu Value: “auto”: chương trình sẽ thực hiện tự động đồng bộ trang web sau khi click vào đối tượng nếu xảy ra ajax (hiện tại hoạt động chưa chính xác)
o Nếu Value là số, chương trình đợi một khoảng thời gian là Value trước khi thực hiện bước tiếp theo hoặc trả về kết quả sau cùng.
o Nếu Value cĩ dạng “[event]xpath”:
Nếu event là “change”: chương trình sẽ đợi cho đến khi phần tử element được lấy bởi xpath thay đổi hoặc khi event timeout (5s).
• Target: đối tượng tác động của action. Target cĩ dạng: [type] search. Hiện chương trình hỗ trợ 3 kiểu tìm kiếm là:
- Nếu type là “name” thì chương trình sẽ tìm kiếm phần tử cĩ thuộc tính name là search
- Nếu type là “id” thì chương trình sẽ tìm kiếm phần tử cĩ thuộc tính id là search
- Nếu type là “xpath” thì lúc này giá trị của search phải cĩ dạng [number]xpath, chương trình sẽ thực hiện tìm kiếm các phần tử thỏa biểu thức xpath và lấy phần tử thứ number trong các phần tử tìm kiếm được.
• Value: giá trị hoặc option của action
Ví dụ 1:
Tập tin input của DESSBrowser: http://google.com type [name]q project click [name]btnG 0
Chương trình sẽ load trang http://google.com, sau đĩ thực hiện nhập chuỗi “project” vào khung search của google, và click chuột vào nút search để lấy nội dung trang kết quả trả về.
Tập tin input của DESSBrowser http://comic.vuilen.com/ click
[xpath][0]//img[@src="images/next_rounded_sidebar2.gif"] [change]//body
Chương trình thực hiện load trang web, sau đĩ click vào nút phân trang ajax và đợi cho đến khi body thay đổi (nghĩa là trang web đã load xong ajax).
1.9.4 EXTRACTOR
Class Extractor cĩ nhiệm vụ bĩc tách dữ liệu từ nội dung trang web mà crawler trả về
Hình 3-18. Sơ đồ class của các Extractor