2009-12-18 32 views
7

以編程方式從一堆網頁中提取結構化數據的最簡單方法是什麼?以編程方式從一堆網頁中提取結構化數據的最簡單方法是什麼?

我目前正在使用我編寫的Adobe AIR程序來跟蹤一頁上的鏈接,並從後續頁面中獲取一段數據。這實際上工作正常,對於程序員,我認爲這個(或其他語言)提供了一個合理的方法,以個案爲基礎寫入。也許有一種特定的語言或圖書館可以讓程序員很快做到這一點,如果有的話,我會有興趣知道它們是什麼。

此外,還有任何工具可以讓非程序員(如客戶支持代表或負責數據採集的人員)從網頁中提取結構化數據,而無需執行大量的複製和粘貼操作?

回答

11

如果您WWW::Mechanize & pQuery#2做搜索,你會使用這些Perl的CPAN模塊看到很多例子。

但是,因爲您提到「非程序員」,那麼或許Web::Scraper CPAN模塊可能更合適?它更像DSL之類,因此對於「非程序員」來說可能更容易接受。

下面是從文檔從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"; 
} 
2

我發現YQL成爲這樣的事情非常強大的和有用的工作做好。您可以從互聯網上選擇任何網頁,並使其有效,然後允許您使用XPATH查詢它的各個部分。您可以將其輸出爲XML或JSON,以便加載到另一個腳本/應用程序中。

我寫了我的第一個實驗,在這裏:

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

自此YQL已經變得更加強大與另外EXECUTE關鍵字,讓你寫你自己的邏輯在JavaScript並運行此在將數據返回給您之前在雅虎的服務器上。

YQL的更詳細的寫法是here

您可以爲YQL創建一個數據表,以獲取您想要獲取的信息的基礎信息,然後負責數據獲取的人員可以在該表中編寫非常簡單的查詢(在DSL中相當英語) 。這將是比「正確的編程」至少他們更容易...

0

如果你不介意它接管您的計算機,你碰巧需要javasript支持,WatiN是一個相當好瀏覽工具。用C#編寫,過去對我來說非常可靠,它爲瀏覽器提供了一個很好的獨立於瀏覽器的包裝器,可以通過頁面獲取文本。

2

Sprog,它允許您以圖形方式構建部件外的流程(獲取URL - >流程HTML表格 - >寫入文件),並且可以將Perl代碼放入流程的任何階段,或者編寫自己的零件非程序員使用。它看起來有點遺棄,但仍然運作良好。

0

商業工具是否可行?如果是這樣查看http://screen-scraper.com/它是非常容易設置和使用來刮取網站。他們有免費的版本,實際上相當完整。不,我不隸屬於該公司:)

相關問題