我有問題解析數據與我的抓取工具我寫在perl從freebase。 我試圖從該URL拔出數據:解析來自freebase的數據與perl
(例如)
它與IMDB_ID的和MID的頁面。我正在嘗試提取鏈接。問題是我只有100個結果,當我在Mozilla Firefox中達到'頁面底部'時,我得到了更多結果(另外11個)。我正在使用LWP :: UserAgent。
任何人都知道一些示例代碼的解決方案,如何自動從此頁面拉出所有111個MID的鏈接。
這裏是我的代碼:
#!/usr/bin/perl
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
use HTML::LinkExtor;
$URL = 'http://www.freebase.com/authority/imdb/title?ns&lang=en& filter=%2Ftype%2Fnamespace%2Fkeys×tamp=2013-11-20×tamp=2013-11-21'; #URL
$browser = LWP::UserAgent->new();
$browser->timeout(10);
my $request = HTTP::Request->new(GET => $URL);
my $response = $browser->request($request);
if ($response->is_error()) {printf "%s\n", $response->status_line;}
$contents = $response->content();
my ($page_parser) = HTML::LinkExtor->new(undef, $URL);
$page_parser->parse($contents)->eof;
@links = $page_parser->links;
foreach $link (@links) {
$_ = $$link[2];
# if (index($$link[2], $_) != -1) {
$mid = $$link[2];# if m/http:\/\/www\.freebase\.com\/m\//;
#$mid =~ s/\?links=//;
#$mid =~ s/http:\/\/www.freebase.com\///;
print "MID $mid\n";
}
LWP :: UserAgent不能很好地處理JS重頁。您可以更輕鬆地使用Freebase的[HTTP API](https://developers.google.com/freebase/v1/getting-started)。 – rutter
我想用perl模塊來做。任何人都可以給我一些代碼示例。 – user3085049
您可以使用任何HTTP客戶端庫,可能性更大。關鍵的區別在於您是否正在處理[格式化供人使用]的數據(http://en.wikipedia.org/wiki/Special:Log)或[更多機器人使用](http:// en。 wikipedia.org/w/api.php?action=query&list=logevents&format=xml)。 – rutter