Как я могу начать работу со страницей с помощью Perl? - PullRequest
3 голосов
/ 01 февраля 2011

Я заинтересован в изучении Perl. Для справки я использую книги Learning Perl и сайты cpan.

Я с нетерпением жду, чтобы сделать какое-нибудь веб / текстовое приложение, использующее Perl, чтобы применить все, что я узнал.

Пожалуйста, предложите мне несколько хороших вариантов для начала.

(это не домашняя работа. Хочу сделать что-то в Perl, которое поможет мне использовать основные функции Perl)

Ответы [ 5 ]

10 голосов
/ 01 февраля 2011

Если веб-страницы, которые вы хотите очистить, для правильной работы требуют JavaScript, вам потребуется больше, чем может предоставить WWW :: Mechanize .Возможно, вам даже придется прибегнуть к управлению определенным браузером через Perl (например, используя Win32 :: IE :: Mechanize или WWW :: Mechanize :: Firefox ).

Я не пробовал, но есть также WWW :: Scripter с WWW :: Scripter :: Plugin :: JavaScript плагином.

8 голосов
/ 02 февраля 2011

Как уже говорили другие, WWW :: Mechanize является отличным модулем, который можно использовать для задач веб-поиска; вы научитесь правильно его использовать, это может облегчить выполнение общих задач. Я использовал его для нескольких задач по поиску в Интернете, и он просто позаботился обо всех скучных вещах - «иди сюда, найди ссылку с этим текстом и следуй за ней, теперь найди форму с полями с именами« username »и« password » , введите эти значения и отправьте форму ... ".

Scrappy также стоит посмотреть - он позволяет вам многое делать с очень небольшим кодом - пример из его документации:


    my $spidy = Scrappy->new;

    $spidy->crawl('http://search.cpan.org/recent', {
        '#cpansearch li a' => sub {
            print shift->text, "\n";
        }
    });

Scrappy использует Web :: Scraper под капотом, на который вы, возможно, захотите посмотреть и в качестве другого варианта.

Кроме того, если вам нужно извлечь данные из таблиц HTML, HTML :: TableExtract упрощает эту задачу - вы можете найти интересующую вас таблицу, назвав содержащиеся в ней заголовки и извлечь данные очень легко, например:


    use HTML::TableExtract;
    $te = HTML::TableExtract->new( headers => [qw(Date Price Cost)] );
    $te->parse($html_string) or die "Didn't find table";
    foreach $row ($te->rows) {
        print join(',', @$row), "\n";
    }
8 голосов
/ 01 февраля 2011

Самым популярным модулем очистки веб-страниц для Perl является WWW :: Mechanize , который отлично подходит, если вы не можете просто получить целевую страницу, но вам нужно перейти к ней, например, используя ссылки или формы, для входа. Взгляните на его документацию для вдохновения. Если ваши потребности просты, вы можете извлечь нужную информацию из HTML с помощью регулярных выражений (но остерегайтесь вашего здравомыслия ), в противном случае может быть лучше использовать такой модуль, как HTML :: TreeBuilder чтобы сделать работу.

Модуль, который кажется интересным, но который я еще не пробовал, это WWW :: Scripter . Это подкласс WWW :: Mechanize, но имеет поддержку Javascript и AJAX, а также интегрирует HTML :: DOM , еще один способ извлечения информации со страницы.

2 голосов
/ 25 февраля 2011

Попробуйте модуль Perl Web-Scraper. учебник для начинающих можно найти здесь .

Это безопасно, легко и быстро.

1 голос
/ 01 марта 2011

Вы также можете взглянуть на мою новую оболочку Perl через Java HtmlUnit.Он очень прост в использовании, например, посмотрите краткое руководство здесь:

http://code.google.com/p/spidey/wiki/QuickTutorial

К завтрашнему дню я опубликую некоторые подробные инструкции по установке и первый выпуск.В отличие от Mechanize и тому подобного, вы получаете некоторую поддержку JavaScript, и она намного быстрее и требует меньше памяти, чем очистка экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...