我有问题用我的抓取工具解析数据我正在从freebase写入perl。 我正在尝试从此网址中提取数据:
(实施例)
是IMDB_ID和MID的页面。我正在尝试提取链接。问题是我只有100个结果,当我在Mozilla Firefox中达到“页面底部”时,我得到更多结果(另外11个)。我正在使用LWP :: UserAgent。
任何人都知道一些示例代码的解决方案,如何从此页面自动提取MID的所有111个链接。
这是我的代码:
#!/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";
}
答案 0 :(得分:1)
抓取freebase.com可能会阻止你。正如评论中所提到的,Freebase为轻度/中等任务使用提供RESTful JSON API或交互式查询,为重度消费者提供整个数据库的bulk download。