2010-11-09 27 views
11

Đề xuất của bạn về cách viết trình thu thập dữ liệu web trong Ruby là gì? Bất kỳ lib tốt hơn cơ giới hóa?Trình thu thập thông tin web trong ruby ​​

+2

Tốt hơn theo cách nào? –

+0

Cơ chế là một công cụ tuyệt vời nếu bạn cần điều hướng một trang web, điền vào biểu mẫu, xác thực, v.v. Nó không phải là một con nhện bởi vì bạn phải nói cho nó cách làm mọi thứ. Tôi đã không cố gắng Anemone nhưng các tính năng của nó trông tốt. Dù bạn làm gì, hãy đảm bảo rằng bạn tôn trọng tệp 'robots.txt' trên trang web bạn đang chạy chống lại hoặc điều tiết lại mã của bạn. Những con nhện bị cư xử xấu có thể khiến bạn bị cấm. Viết một con nhện không phải là khó; Tôi đã viết nhiều hơn tôi có thể nhớ. Viết một trong đó là một công dân tốt và mạnh mẽ là một nhiệm vụ lớn hơn, do đó, đi với một bánh xe được xây dựng sẵn nếu bạn có thể. –

+0

Tôi khuyên bạn nên xem xét "[Trình thu thập dữ liệu web dựa trên Ruby tốt nhất là gì?] (Http://stackoverflow.com/questions/4981379/what-are-some-good-ruby-based-web-crawlers/4981595) " –

Trả lời

9

Nếu bạn chỉ muốn tải nội dung của trang, cách đơn giản nhất là sử dụng các hàm open-uri. Họ không yêu cầu thêm đá quý. Bạn chỉ cần require 'open-uri' và ... http://ruby-doc.org/stdlib-2.2.2/libdoc/open-uri/rdoc/OpenURI.html

Để phân tích nội dung mà bạn có thể sử dụng Nokogiri hoặc khác đá quý, mà cũng có thể có, ví dụ, hữu ích XPATH thuật- Công nghệ. Bạn có thể tìm thấy các thư viện phân tích cú pháp khác just here on SO.

25

Tôi muốn thử anemone. Nó đơn giản để sử dụng, đặc biệt nếu bạn phải viết một trình thu thập đơn giản. Theo tôi, nó cũng được thiết kế tốt. Ví dụ: tôi đã viết một tập lệnh ruby ​​để tìm kiếm lỗi 404 trên các trang web của mình trong một thời gian rất ngắn.

+0

Bạn nên đăng một ý chính về điều này vì tôi sẽ sớm triển khai cùng một chức năng. Những người khác có lẽ sẽ sử dụng nó là tốt. – cha55son

5

Bạn có thể muốn kiểm tra wombat được xây dựng trên cơ sở của Mechanize/Nokogiri và cung cấp một DSL (như Sinatra, ví dụ) để phân tích các trang. Khá gọn gàng :)

1

tôi đang làm việc trên pioneer gem mà không phải là một con nhện, nhưng một trình thu thập không đồng bộ đơn giản dựa trên em-synchrony gem

+1

Tốt nhất tôi có thể nói, 'spider web' và 'trình thu thập dữ liệu web' là đồng nghĩa. –

+0

Tiếng Anh không phải là ngôn ngữ mẹ đẻ của tôi, vì vậy tôi có thể sai, nhưng có vẻ như với tôi, đó là trình thu thập thông tin là một cái gì đó tổng quát hơn sau đó là nhện. Spider là một loại công cụ hoàn chỉnh: nó đệ quy lướt qua các liên kết. Và người tiên phong giống như một khuôn khổ nhỏ hơn. Bạn có thể viết con nhện của mình với người tiên phong và bạn có thể làm được nhiều hơn;). Nhưng bạn cần phải làm công việc nhiều hơn bằng tay, để sử dụng tiên phong nhưng nó là nhanh nhẹn hơn. – fl00r

+1

Theo [Wikipedia] (http://en.wikipedia.org/wiki/Web_crawler): "Các thuật ngữ khác cho trình thu thập thông tin web là kiến, trình lập chỉ mục tự động, bot, trình thu thập dữ liệu web, rô bốt web ..." Điều này phù hợp với [StackOverflow từ đồng nghĩa cho trình thu thập thông tin web] (http://stackoverflow.com/tags/web-crawler/synonyms). –

0

tôi vừa phát hành một thời gian gần đây được gọi là Klepto. Nó có một DSL khá đơn giản, được xây dựng trên đỉnh của capybara và có rất nhiều tùy chọn cấu hình thú vị.

+2

Sẽ rất tuyệt nếu bạn có thể mở rộng câu trả lời của mình và giải thích thêm về các tùy chọn thú vị này và tại sao thư viện của bạn tốt hơn cho công việc. Ngoài ra, hãy cẩn thận khi đăng liên kết tới các dự án của riêng bạn, cộng đồng có thể xem nó là một chút spam. – Kev

Các vấn đề liên quan