Trang 1 / 3 123 LastLast
Hiển thị kết quả từ 1 đến 10 / 28
  1. #1
    Tham gia
    08-05-2012
    Bài viết
    18
    Like
    0
    Thanked 1 Time in 1 Post

    Cùng tham gia xây dựng một Crawler tự động lấy tin từ website khác!

    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
    Được sửa bởi ezCrawler lúc 10:47 ngày 12-05-2012
    Quote Quote

  2. Thành viên Like bài viết này:


  3. #2
    Tham gia
    01-12-2004
    Bài viết
    151
    Like
    0
    Thanked 5 Times in 4 Posts
    Không phải là project thú vị mà chán chết. Vì quá nhiều người làm crawler kiểu này rồi, cả tây, tầu, Việt đều làm và lăng xê đầy ra rồi.

    Bạn muốn học thì tìm vài cái về mà mổ xẻ đã, xem có thoả mãn không.

  4. #3
    Tham gia
    08-05-2012
    Bài viết
    18
    Like
    0
    Thanked 1 Time in 1 Post
    Thanks scooby! Thật ra mình cũng đã xem nhiều crawler người ta viết rồi. Đa phần thì chỉ là các crawler lấy tin đơn giản, khả năng mở rộng kém, chạy thì kém ổn định, chạy trong thời gian dài thì không nỗi vì chiếm tài nguyên quá lớn. Các crawler đó không có khả năng điều hướng mà chạy rất lung tung.

    Về mình thì mình muốn một crawler có khả năng như sau: Crawler phải chạy có định hướng. Chạy có định hướng nghĩa là nó có thể chạy và lấy thông tin của một chuyên mục tin tức và import đúng vào chuyên mục tương ứng của website của mình. Ví dụ: mình muốn crawler của mình login vào vietnamwork lấy tất cả các tin tuyển dụng của chuyên mục IT-Phần mềm và import vào đúng chuyên mục IT-Phần mềm của site mình.

    Nếu bạn Scooby có nhiều kinh nghiệm trong việc xây dựng các crawler có khả năng tương tự như thế thì có thể tư vấn giúp mình hoặc bạn biết crawler open source C# nào có khả năng tương tự thì giới thiệu mình nhé. Điều quan trọng là crawler phải chạy có định hướng, có thể tích hợp dễ dàng component import dữ liệu trích xuất được của crawler vào database của website mình, các bộ phận trích xuất dữ liệu (trích xuất tiêu đề, ngày tháng, nội dụng của tin,v.v...) phải được cấu hình dễ dàng để thích ứng với nhiều site khác nhau (VD: mình có thể thay đổi cấu hình của bộ phận trích xuất dữ liệu để trích xuất tin của nhiều site: vnexpress, tuoitre, ngoisao, v.v... khác nhau mà không cần phải code lại). Một khả năng mình rất quan tâm là crawler có khả năng login và lấy được các thông tin mà cần phải login mới nhìn thấy và lấy được. Mà bạn biết rồi đấy, cấu trúc html và các login của các website thì rất là khác nhau.

    Cụ thể hơn thì mình đưa ra một kịch bản như sau: Có khách hàng muốn mua 1000 email, họ tên, số điện thoại của các thành viên đang có bài rao vặt trong chuyên mục thời trang của một website raovat nào đó để họ gửi quảng cáo về một sản phẩm thời trang mới của họ. Website rao vặt đó đòi hỏi phải login mới thấy được địa chỉ email và các thông tin liên hệ của người rao. Với một kịch bản như thế thì framework của crawler đã xây dựng được cần phải viết thêm những gì? tích hợp như thế nào? hoặc nếu có đầy đủ rồi thì cấu hình ra sao? nó có chạy và quét đúng chuyên mục đã định hay không hay chạy lung tung? thời gian viết thêm là bao lâu? khả năng tái sử dụng của các module ra sao: khi gặp một tình huống tương tự nhưng với website khác thì có cấu hình được hay phải viết lại?

    Một kịch bản khác là: Công ty chúng tôi cung cấp dịch vụ SEO cho website của một khách hàng chuyên về mỹ phẩm dưỡng da. Hãy cung cấp cho chung tôi số lượng các lớn các tốt các tin tức, bài viết và hỏi đáp từ các website tin tức tin cậy có các từ khóa như: chăm sóc da, dưỡng da, da nhờn, da khô, làn da mịn mang để chúng tôi đưa vào website của khách hàng trong vào 1 tuần vì website sẽ live trong 10 ngày tới. Nhiệm vụ của crawler là quét và import vào database của website đó các tin tức, bài viết, hỏi đáp trong các chuyên mục: làm đẹp, sức khỏe, chăm sóc da, v.v... và trong quá trình import phải kiểm tra sự tồn tại của các từ khóa.

    Về phần quét email thì mình thấy các tool quét email trên thị trường hiện có chỉ là quét email lung tung, chạy một lèo ra vài ngàn email đi nữa thì số lượng email đó cũng không khả dụng. Vì sao? Vì email không thì không đủ, phải biết đối tượng của mình là ai (trong kịch bản của mình đưa ra ở trên: email của các thành viên của một trang rao vặt có tham gia rao vặt trên chuyên mục thời trang). Có như thế mới đưa thông tin tới đúng đối tượng.

    Dữ liệu có chọn lọc là tiền bạc. Đây không phải là một dự án để học tập hay học hỏi mà là một dự án theo yêu cầu thực tế. Đúng là crawler thì người ta đã viết nhiều nhưng khả năng customize cho phù hợp với yêu cầu trên thì gần như là phải viết lại hoặc customize quá nhiều (không khác gì viết mới).

    Với những yêu cầu đưa ra như trên thì mình nghĩ đây là những thử thách cho những bạn say mê lập trình. Đối với những bạn say mê lập trình thì thử thách trong việc đưa ra các giải pháp có tích chất logic phức tạp luôn luôn là một điều thú vị.

    Để khích lệ tinh thần những bạn muốn tham gia thì mình xin report trạng thái của project. Phần framework của crawler về cơ bản đã xây dựng xong. Framework gồm những thành phần sau:

    +Crawler: Có trách nhiệm điều phối các thành phần: Initial Workflow, URL Scanner, HTML Extractor, Data Importer, Proxy Provider hoạt động nhịp nhàng trên nền tảng multithread.

    +Workflow worker: Có nhiệm vụ chạy Intitial Workflow (workflow khởi đầu). Chúng ta có thể cấu hình một workflow bằng xml. Một workflow là sự kết hợp các Action theo một trình tự logic. Hiện tại mình đã xây dựng một số Standar Action như sau: GETAction, POSTAction, DebugAction,.... Chúng ta có thể viết thêm action và tích hợp vào rất dễ dang. Chỉ cần kết hợp và cấu hình 2 action GETAction (tải source html của một trang và trích xuất nội dung cần thiết) và POSTAction (post form) theo một trình tự logic thích hợp trong workflow thì chúng ta có khả năng login hầu hết các website. Nếu Initial Worflow được cấu hình thì nó sẽ được chạy trước tiên. Workflow worker là một robot mạnh mẽ và mềm dẻo. Mình đã vận dụng component này để xây dựng một robot. Mình đã thử cấu hình cho robot này up các tin rao vặt trên các diễn đàn rất thành công. Các bạn có thể kiểm tra bằng cách search trên google theo từ khóa sau: "Thiết kế website chuyên nghiệp trọn gói giá tốt" site:www_5giay_vn. Thay dấu "_" thành dấu "." vì mình không có quyền nhập địa chỉ URL trên diễn đàn này. Tất cả những chữ ký bắt đầu băng "THIẾT KẾ WEBSITE CHUYÊN NGHIỆP TRỌN GÓI GIÁ TỐT" của nhiều member khác nhau là do robot của mình up cho chính topic của mình hoặc up phụ người khác.

    +URLScanner: Có nhiệm vụ thu thập URL theo một bản đồ dịnh tuyến mình gọi là URL Scanner Map. Phần này giúp crawler di chuyển trên website theo cách thức mà mình cần. Ví dụ: nó có thể được cấu hình để di chuyển và quét tất cả các URL của các bài viết thuộc một chuyên mục nào đó của một website tin tức.

    +HTMLExtractor: Có nhiệm vụ trích xuất dữ liệu từ html. Extractor được có cấu hình dễ dàng dể trích xuất thông tin cần thiết từ một trang html. Nếu website thay đổi cấu trúc html thì mình thay đổi file cấu hình.

    +DataImporter: Phần này thì mình chỉ tạm xây dựng component cần thiết để import dữ liệu vào website của mình. Rất dễ dàng xây dựng các data importer và tích hợp vào crawler.

    +ProxyProvider: Cung cấp địa chỉ IP để che dấu IP của Crawler.

    Tất cả các thành phần trên đã tích hợp thành công và đã chạy thử nghiệm liên tục trong 7 ngày rất ổn định và không chiếm dụng tài nguyên của server. Không ảnh hưởng tới tốc độ của các ứng dụng khác cũng chạy trên server vì nó không chiếm dụng tài nguyên trong một khoản thời gian dài. Sử dụng tài nguyên và release tài nguyên một cách nhịp nhàng cân đối và độ tin cậy của ứng dụng rất cao (không bị crash suốt thời gian chạy thử nghiệm liên tục 7 ngày) thâu thập được hàng chụp ngàn tin tức, bài viết, hỏi đáp.

    Tuy nhiên ứng dụng đang ở mức framework nên việc vần hành nó cần phải có kỹ năng và cần phải hoàn thiện nhiều hơn nữa.

    Nếu quý bạn nào cảm thấy tính ứng dụng thực tiễn của Crawler này cao và muốn vận dụng nó vào mục đích thu thập thông tin thì có thể liên hệ để mình có thể demo cho các bạn xem phần cơ bản và hợp tác.

    Rất mong sự dóng góp xây dựng cẩn trọng và có trách nhiệm của các bạn!
    Được sửa bởi ezCrawler lúc 09:03 ngày 13-05-2012

  5. #4
    Tham gia
    08-05-2012
    Bài viết
    18
    Like
    0
    Thanked 1 Time in 1 Post
    Ôi! Cái diễn đàn không cho định dạng nội dung gì cả. Các bạn chịu khó đọc vậy. Đây không phải là tool chỉ lấy tin tức đơn thuần. Cái mình muốn là xây dựng một framework thu thập dữ liệu đáp ứng nhiều tình huống thu thập dữ liệu khác nhau, ở bài trên mình có nêu ra 2 tình huống. Đứng trước một kịch bản thu thập dữ liệu thì việc tinh chỉnh Crawler, customize component và tích hợp vào như thế nào? Crawler thường được các chuyên gia SEO ứng dụng vào việc tạo nội dung cho site. Crawler và Robot (post nội dung tự động tạo backlink) là 2 công cụ không thể thiếu của người là SEO. Với kinh nghiệm nhiều năm làm SEO và đã khảo sát các công cụ hiện có trên thị trường thì mình chưa tìm ra được công cụ phù hợp. Công cụ tốt thì giá cao và đã được đóng gói nên khả năng mở rộng và vận dụng vào nhiều mục đích khác nhau và ngoài kịch bạn được đóng gói là không thể. Mình muốn mọi người cùng tham gia và xây dựng một framework. Từ framework này mình có thể nhanh chóng customize để đáp ứng các kịch bản thu thập dữ liệu khác nhau, kể cả dữ liệu cần phải login mới có thể thu thập đẩy đủ được.

  6. #5
    Tham gia
    08-05-2012
    Bài viết
    18
    Like
    0
    Thanked 1 Time in 1 Post
    Một process mà các chuyên gia SEO thường làm là: khóe léo tạo ra các bài viết, tin tức, có nội dung và từ khóa phụ hợp với từ khóa cần SEO. Sau đó họ vào các forum có page rank cao trong lĩnh vực đó. Họ tìm các topic phù hợp (có từ khóa liên quan tới từ khóa muốn SEO) post chính các bài viết mà họ đã thu thập trước đây kèm theo backlink trỏ về chính bài viết đó. Không chỉ là forum mà bất cứ site nào có mục comment hoặc mục hỏi đáp, v.v...Vì khi làm SEO muốn có kết quả tốt và lâu dài thì cần có hai yếu tố: nội dung và backlink. Nếu chúng ta xây dựng tốt Crawler và Robot có khả năng tùy biến cao thì chúng ta có thể tự động hóa 90% công việc trong process trên (10% còn là vận hành công cụ: Crawler và Robot). Hiện tại thì Crawler và Robot mình đang xây dựng thì đã hoàng thành hơn 80% và đã được chạy thử nghiệm cho kết quả 100% như mong đợi. Tuy nhiên chưa có nhiều giao diện người dùng để có thể vận hành dễ dàng mà đòi hỏi phải có chút kỹ năng. Viêc tạo ra một giao diện người dùng đáp ứng được kịch bản da dạng là vô cùng khó khăn nên theo mình thì khi nhận được một yêu cầu cụ thể nào đó thì mình sẽ tạo ra một giao diện đơn giản và cụ thể cho riêng yêu cầu đó, như thế sẽ giúp cho người dùng bình thường cũng có thể vận hành Crawler một cách dễ dàng vào một mục đích cụ thể.

    RẤT MONG SỰ HỢP TÁC CỦA CÁC BẠN!
    Được sửa bởi ezCrawler lúc 10:26 ngày 13-05-2012

  7. #6
    Tham gia
    11-09-2011
    Bài viết
    308
    Like
    3
    Thanked 74 Times in 46 Posts
    Quote Được gửi bởi ezCrawler View Post
    Nếu quý bạn nào cảm thấy tính ứng dụng thực tiễn của Crawler này cao và muốn vận dụng nó vào mục đích thu thập thông tin thì có thể liên hệ để mình có thể demo cho các bạn xem phần cơ bản và hợp tác.

    Rất mong sự dóng góp xây dựng cẩn trọng và có trách nhiệm của các bạn!
    Tôi có hứng thú với dự án của bạn. Chúng ta sẽ hợp tác như thế nào? Bạn có định open source không? Nếu có, tôi sẽ port dự án sang java.

  8. #7
    Tham gia
    08-05-2012
    Bài viết
    18
    Like
    0
    Thanked 1 Time in 1 Post
    Rất cảm ơn sự quan tâm của bạn Mucor. Đây là một dự án cũng khá tâm huyết của mình. Framework này chủ yếu dùng trong việc xây dựng các tool phục vụ trong việc làm SEO. Ban đầu thì mình không có ý định opensource. Mình mong muốn hợp tác với các công ty, tổ chức làm SEO muốn có công cụ mạnh mẽ để tự động hóa các tác vụ trong SEO. Nếu bạn làm trong lĩnh vực đó thì chúng ta có thể hợp tác tốt với nhau. Dựa trên framework này mình sẽ xây dựng các tool theo các yêu cầu của nghiệp vụ SEO: như thu thập dữ liệu và post tin, v.v...

  9. #8
    Tham gia
    13-05-2012
    Bài viết
    5
    Like
    0
    Thanked 0 Times in 0 Posts
    tham vọng tốt, tuy nhiên theo mình thấy cái bạn mô tả giống như robot. Nhưng xét kỹ thì các đặc tính của nó lấy được các vùng tin cụ thể thì lại không phải là robot nữa. Mỗi site một khác. Mỗi nơi bố trí tin tức theo các riêng. Nên để lấy được cuối cùng vẫn phải ngồi cấu hình bằng tay.
    Mình cũng đã làm 1 cái chạy tách rời từng provider riêng lẻ. Tuy nhiên làm một thời gian chạy thì có một số site thay đổi content thường xuyên. VD thêm vào 1 cái banner quảng cáo chẳng hạn, là robot của mềnh tịt không lấy được. Lại phải vào cấu hình. Qua ngày hôm sau tụi nó hứng chí lại đổi tiếp -> lại toy, vòng luẩn quẩn, chán kô thèm code nữa.
    Tham khảo: services dot fsviet dot com
    hiện tại chỉ còn mỗi thằng VNexpress với điểm nhấn tuần tin việt nam net còn chạy được
    có nhã hứng thì liên hệ cafe chém jó trao đổi thêm (tui ở HN)
    Y: duongnbtb

  10. #9
    Tham gia
    08-05-2012
    Bài viết
    18
    Like
    0
    Thanked 1 Time in 1 Post
    Hi bạn Duongnbtb,
    Đúng là khi cấu trúc chính html của website thay đổi thì phải cấu hình lại cho để trích xuất nội dung nhưng mình vẫn không cần phải code lại => chỉ cấu hình lại một xíu.

    Thật ra không đến nỗi là website họ thêm một vài nội dung thì (thêm banner quảng cáo) thì mình phải cấu hình lại đâu, miễn là cấu trúc html layout chính của nó không đổi là ok. Mình dùng Xpath để chỉ dẫn việc trích xuất dữ liệu trên html kết hợp với dùng library Html Agility Pack.

    Thật ra thì khi website đã live thì hiếm khi người ta thay đổi layout chính của html mà chỉ thêm các module ở các vùng khác nhau trong layout đó và việc đó không ảnh hưởng nhiều cấu hình trích xuất dữ liệu lắm. Hơn nữa việc cấu hình lại cũng không mất nhiều thời gian chừng 20 phút là nhiều nhất.

    Không biết bạn tổ chức cấu hình phần trích xuất dữ liệu như thế nào? Có thể nó chưa đủ khéo léo để vượt qua các thay đổi nhỏ về html của site (chỉ thêm một banner quảng cáo đã ảnh hưởng tới cấu hình). Chúng ta cũng có thể chia sẽ kinh nghiệm trong vấn để này một chút!

    Mình ở Tp HCM lận! Đã add nick yahoo của bạn!

  11. #10
    Tham gia
    08-05-2012
    Bài viết
    18
    Like
    0
    Thanked 1 Time in 1 Post
    Xin chân thành lắng nghe ý kiến của mọi người!

Trang 1 / 3 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •