Модуль Perl Mechanize для очистки PDF-файлов - PullRequest
1 голос
/ 11 мая 2011

У меня есть веб-сайт, на который загружено много PDF-файлов. Что я хочу сделать, это загрузить все эти PDF-файлы, представленные на сайте. Для этого сначала нужно указать имя пользователя и пароль для веб-сайта. После поиска я нашел пакет WWW :: Mechanize, который выполняет эту работу. Теперь возникает проблема, заключающаяся в том, что я хочу сделать рекурсивный поиск на веб-сайте, что означает, что если ссылка не содержит PDF, то я должен не просто отбросить ссылку, а перейти по ссылке и проверить, есть ли на новой странице ссылки, содержащие PDF-файлы. Таким образом, я должен провести тщательный поиск по всему веб-сайту, чтобы загрузить все загруженные PDF-файлы. Любое предложение о том, как это сделать?

Ответы [ 3 ]

2 голосов
/ 11 мая 2011

Я бы также пошел с wget, который работает на различных платформах.

Если вы хотите сделать это в Perl, проверьте CPAN для веб-сканеров.

Возможно, вы захотите отделить сбор URL-адресов PDF от их фактической загрузки. Сканирование уже является длительной обработкой, и может быть полезно иметь возможность передавать задачи загрузки отдельным рабочим процессам.

2 голосов
/ 12 ноября 2011

Вы правы насчет использования модуля WWW::Mechanize. В этом модуле есть метод - find_all_links(), в котором вы можете указать регулярное выражение, чтобы оно соответствовало типу страниц, которые вы хотите захватить или перейти.

Например:

my $obj = WWW::Mechanize->new;
.......
.......
my @pdf_links = $obj->find_all_links( url_regex => qr/^.+?\.pdf/ );

Это дает вам все ссылки, указывающие на PDF-файлы. Теперь переберите эти ссылки и выполните вызов get для каждой из них.

1 голос
/ 11 мая 2011

Предлагаю попробовать с wget . Что-то вроде:

wget -r --no-parent -A.pdf --user=LOGIN --pasword=PASSWORD http://www.server.com/dir/
...