Как я могу сделать HTTP-запрос GET от Perl? - PullRequest
2 голосов
/ 13 октября 2009

Я пытаюсь написать свою первую программу на Perl. Если вы считаете, что Perl - плохой язык для поставленной задачи, скажите мне, какой язык решит его лучше.

Программа проверяет связь между данным компьютером и удаленным сервером Apache. Сначала программа запрашивает список каталогов с сервера Apache, затем анализирует список и загружает все файлы один за другим. В случае возникновения проблемы с файлом (соединение восстанавливается до достижения указанной длины содержимого), это должно быть зарегистрировано, и должен быть найден следующий файл. Нет необходимости сохранять файлы или даже проверять целостность, мне нужно только регистрировать время, необходимое для завершения, и все случаи, когда соединение сбрасывается.

Для получения списка ссылок из сгенерированного Apache индекса каталога я планирую использовать регулярное выражение, аналогичное

/href=\"([^\"]+)\"/

Регулярное выражение еще не отлажено.

Что такое «справочный» способ сделать HTTP-запрос от Perl? Я гуглил и нашел примеры, использующие много разных библиотек, некоторые из них коммерческие. Мне нужно что-то, что может обнаружить отключения (тайм-аут или сброс TCP) и обработать их.

Еще один вопрос. Как мне сохранить все, пойманные моим регулярным выражением при глобальном поиске в виде списка строк с минимальными усилиями по написанию кода?

Ответы [ 4 ]

10 голосов
/ 13 октября 2009

Что касается описания проблемы, я бы использовал WWW :: Mechanize . Mechanize - это подкласс LWP::UserAgent, который добавляет поведение с состоянием и анализ HTML. С помощью mech вы можете просто набрать $mech->get($url_of_index_page), а затем использовать $mech->find_all_links(criteria), чтобы выбрать ссылки для перехода.

9 голосов
/ 13 октября 2009

У вас много вопросов в одном. Ответ на вопрос в заголовке вашего поста - использовать LWP :: Simple .

Ответы на большинство других ваших вопросов приведены в perlfaq9 с соответствующими указателями для получения дополнительной информации.

4 голосов
/ 13 октября 2009

Что касается разметки синтаксического анализа с регулярными выражениями, то НЕ ДАВАЙ!

http://htmlparsing.icenine.ca объясняет некоторые причины, по которым вам не следует этого делать. Хотя то, что вы пытаетесь разобрать, кажется простым, используйте правильный анализатор.

Страница, указанная выше, больше не существует ...

http://www.cwhitener.com/htmlparsing

3 голосов
/ 13 октября 2009

Как более общий ответ, Perl - прекрасный язык для выполнения HTTP-запросов, как и множество других языков. Если вы знакомы с Perl, даже не стесняйтесь; Есть много отличных библиотек, которые могут сделать то, что вам нужно.

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