Mình đang có ý định phát triển một website tin tức chuyên về làm đẹp, thời trang, sức khỏe,... Các bài viết hay tin tức của website này được lấy từ các chuyên mục tương ứng trên các trang tin tức khác hoặc admin tự nhập vào. Tuy nhiên mình vẫn ưu tiên việc lấy tin tự động hơn vì với công cụ như thế mình có thể nhanh chóng xây dựng được một kho tin tức khổng lồ trong thời gian ngắn.
Viết một website tin tức thì không khó nhưng xây dựng Crawler lại là chuyện khác. Crawler phải có những tính năng sau:
+ Có thể lấy tin tức theo từng chuyên mục của site khách và import đúng vào chuyên mục tương ứng của site tin tức của mình. Bằng cách nào đó chúng ta phải cho phép config để map các chuyên mục giữa 2 site.
+ Crawler phải có khả năng che dấu địa chỉ Ip của mình bằng proxy
+ Crawler có khả năng login vào những site đòi hỏi login mới lấy được tin tức. VD: Đối với trang vietnamwork thì crawler phải login mới lấy được đầy đủ thông tin của mẫu tin tuyển dụng.
+ Crawler phải mềm dẻo để có thể cấu hình lấy tin tức từ các site khác nhau mà không cần phải code lại. Cũng như khi site khách thay đổi cấu trúc html thì crawler cũng có thể dễ dàng cấu hình lại một cách nhanh chóng mà không phải code lại.
+ Crawler phải có khả năng chạy bền bỉ, ổn định trong một thời gian dài: ít nhất là chạy liên tục 1 tuần mà không cần phải khởi động lại. Crawler không được chiếm dụng quá nhiều tài nguyên của Server vì còn các ứng dụng web khác đang cùng chạy trên server đó.
+ Crawler cần được lập trình theo dạng multithread để tăng tốc và cũng lúc có thể lấy được nhiều tin tức.
+ Crawler phải được xây dựng trên pattern "provider" gồm các module có thể tách thay đổi để dàng. Theo mình thì ban đầu có thể có các module sau đây: Module quét link (URL), Module trích xuất nội dung, Module import nội dung. Các module này cần phải cho phép cấu hình dễ dàng để đáp ứng việc lấy tin của nhiều site với cấu trúc HTML khác nhau.
+ Crawler phải download được hình ảnh từ trên site khách về site chủ và chỉnh sửa đường dẫn hình ảnh lại cho tương ứng.
+ Crawler không chỉ được sử dụng để lấy tin tức mà còn được sử dụng vào nhiều mục đích khác chẳng hạn như quét email, lấy số điện thoại, v.v... nên cần được xây dựng một nền tản mềm dẻo. VD: khi cần quét mail chúng ta chỉ cần config module trích xuất là module trích xuất email.
Trên đây là một vài yêu cầu về crawler mà mình đề xuất. Hiện tại mình đang xây dựng phần nền tản cho crawler này. Mình nghĩ đây là một project khá thú vị. Mình rất hoan nghênh bạn nào có nhả ý cùng tham gia để học hỏi kinh nghiệm và cộng tác lâu dài. Ngôn ngữ được xử dụng là C#.
Xin trân trọng những đóng góp ý kiến của các bạn,
ezCrawler
Bookmarks