У меня есть проблема для анализа данных с помощью моего искателя. Я пишу в 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: // ru. wikipedia.org/w/api.php?action=query&list=logevents&format=xml). – rutter