2009-12-18 21 views
7

Cách dễ nhất để trích xuất dữ liệu có cấu trúc theo chương trình từ một nhóm trang web là gì?Cách dễ nhất để trích xuất dữ liệu có cấu trúc theo chương trình từ một loạt các trang web là gì?

Tôi hiện đang sử dụng chương trình Adobe AIR mà tôi đã viết để theo dõi các liên kết trên một trang và lấy một phần dữ liệu ra khỏi các trang tiếp theo. Điều này thực sự hoạt động tốt, và cho các lập trình viên, tôi nghĩ rằng điều này (hoặc các ngôn ngữ khác) cung cấp một cách tiếp cận hợp lý, được viết trên cơ sở từng trường hợp. Có thể có một ngôn ngữ hoặc thư viện cụ thể cho phép một lập trình viên làm điều này rất nhanh chóng, và nếu vậy tôi sẽ quan tâm đến việc biết chúng là gì. Ngoài ra, còn có công cụ nào cho phép người không lập trình, như đại diện hỗ trợ khách hàng hoặc người phụ trách thu thập dữ liệu, trích xuất dữ liệu có cấu trúc từ trang web mà không cần phải sao chép và dán không?

Trả lời

11

Nếu bạn thực hiện tìm kiếm trên Stackoverflow cho WWW::Mechanize & pQuery bạn sẽ thấy rất nhiều ví dụ sử dụng các module Perl CPAN.

Tuy nhiên, vì bạn đã đề cập "không lập trình" thì có lẽ Web::Scraper mô-đun CPAN có thể phù hợp hơn? Của nó nhiều hơn DSL như và vì vậy có lẽ dễ dàng hơn cho "không lập trình" để chọn lên.

Dưới đây là một ví dụ từ các tài liệu hướng dẫn để lấy tweet từ Twitter:

use URI; 
use Web::Scraper; 

my $tweets = scraper { 
    process "li.status", "tweets[]" => scraper { 
     process ".entry-content", body => 'TEXT'; 
     process ".entry-date",  when => 'TEXT'; 
     process 'a[rel="bookmark"]', link => '@href'; 
    }; 
}; 

my $res = $tweets->scrape(URI->new("http://twitter.com/miyagawa")); 

for my $tweet (@{$res->{tweets}}) { 
    print "$tweet->{body} $tweet->{when} (link: $tweet->{link})\n"; 
} 
0

tôi sử dụng một sự kết hợp của Ruby với hpricotwatir được công việc làm rất hiệu quả

2

tôi thấy YQL là rất mạnh mẽ và hữu ích cho các loại điều này. Bạn có thể chọn bất kỳ trang web nào từ internet và nó sẽ làm cho nó hợp lệ và sau đó cho phép bạn sử dụng XPATH để truy vấn các phần của nó. Bạn có thể xuất nó dưới dạng XML hoặc JSON sẵn sàng để tải vào một tập lệnh/ứng dụng khác.

tôi đã viết thử nghiệm đầu tiên của tôi với nó ở đây:

http://www.kelvinluck.com/2009/02/data-scraping-with-yql-and-jquery/

Kể từ đó YQL đã trở nên mạnh hơn với việc bổ sung các từ khóa EXECUTE cho phép bạn viết logic của riêng bạn trong javascript và chạy này trên máy chủ của Yahoo trước khi trả lại dữ liệu cho bạn.

Viết chi tiết hơn về YQL là here.

Bạn có thể tạo datatable cho YQL để lấy thông tin cơ bản về thông tin bạn đang cố gắng lấy và sau đó người phụ trách thu thập dữ liệu có thể viết các truy vấn rất đơn giản (trong DSL là prettymuch english) . Nó sẽ dễ dàng hơn cho họ hơn là "lập trình thích hợp" ít nhất ...

0

Nếu bạn không nhớ nó khi tiếp quản máy tính của bạn, và bạn tình cờ cần sự hỗ trợ JavaScript, WatiN là khá damn tốt công cụ duyệt web. Được viết bằng C#, nó đã rất đáng tin cậy đối với tôi trong quá khứ, cung cấp một trình bao bọc trình duyệt độc lập tốt đẹp để chạy qua và nhận văn bản từ các trang.

2

Sprog, cho phép bạn vẽ đồ họa các quy trình từ các phần (Nhận URL -> Xử lý bảng HTML -> Viết tệp) và bạn có thể đặt mã Perl trong bất kỳ giai đoạn nào của quy trình hoặc viết các phần của riêng bạn không sử dụng lập trình viên. Có vẻ hơi bị bỏ rơi, nhưng vẫn hoạt động tốt.

0

Các công cụ thương mại có phải là câu trả lời khả thi không? Nếu vậy hãy kiểm tra http://screen-scraper.com/ nó là siêu dễ dàng để thiết lập và sử dụng để cạo các trang web. Họ có phiên bản miễn phí thực sự khá hoàn chỉnh. Và không, tôi không liên kết với công ty :)

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