Сценарии HTTP более эффективны - PullRequest
8 голосов
/ 11 января 2010

Часто я хочу автоматизировать http-запросы.В настоящее время я использую Java (и общедоступный http-клиент), но, вероятно, предпочел бы подход на основе сценариев.Что-то действительно быстрое и простое.Где я могу установить заголовок, перейти на страницу и не беспокоиться о настройке всего жизненного цикла OO, настройке каждого заголовка, вызове html-парсера ... Я ищу решение на ЛЮБОМ языке, предпочтительный сценарий

Ответы [ 12 ]

6 голосов
/ 11 января 2010

Watir звучит близко к тому, что вы хотите, хотя он (например, Selenium, на который есть ссылка в другом ответе) фактически открывает браузер, чтобы делать вещи. Вы можете увидеть некоторые примеры здесь . Еще одна браузерная система записи и воспроизведения - sahi .

Если ваше приложение использует WSGI , тогда paste - хороший вариант.

Механизм, связанный с другим ответом - это «браузер в библиотеке», и есть клоны в perl , Ruby и Python . Perl - это оригинал, и это, кажется, путь, если вы не хотите браузер. Проблема этого подхода заключается в том, что весь интерфейсный код (который может опираться на JavaScript) не будет выполняться.

6 голосов
/ 11 января 2010

Если у вас есть простые потребности (получить страницу и затем проанализировать ее), трудно победить LWP :: Simple и HTML :: TreeBuilder .

use strict;
use warnings;

use LWP::Simple;
use HTML::TreeBuilder;

my $url = 'http://www.example.com';
my $content = get( $url) or die "Couldn't get $url";

my $t = HTML::TreeBuilder->new_from_content( $content );
$t->eof;
$t->elementify;

# Get first match:
my $thing = $t->look_down( _tag => 'p', id => qr/match_this_regex/ );

print $thing ? $thing->as_text : "No match found\n";

# Get all matches:
my @things = $t->look_down( _tag => 'p', id => qr/match_this_regex/ );

print $_ ? $_->as_text : "No match found" for @things;
6 голосов
/ 11 января 2010

Мой ход: wget или perl с lwp . Вы найдете пример на связанной странице.

6 голосов
/ 11 января 2010

Взгляните на Селен . Он генерирует код для C #, Java, Perl, PHP, Python и Ruby, если вам нужно настроить скрипт.

6 голосов
/ 11 января 2010

Механизм для Python кажется простым в использовании: http://wwwsearch.sourceforge.net/mechanize/

4 голосов
/ 11 января 2010

Я сейчас тестирую API ReST и нашел ReST Client очень хорошим. Это программа с графическим интерфейсом, но, тем не менее, вы можете сохранять и восстанавливать запросы в виде XML-файлов (или позволить им генерироваться), встраивать, писать тестовые сценарии и так далее. И он основан на Java (что не является специальным преимуществом, но вы упомянули об этом).

Минус баллов за запись сессий. Клиент ReST хорош для безликого "one-shot".

Если это не соответствует вашим потребностям, я бы выбрал уже упомянутый Механизировать (или WWW-Механизировать , как его называют в CPAN).

3 голосов
/ 11 января 2010

В зависимости от того, что именно вы делаете, самое простое решение выглядит как bash + curl.

Справочная страница для последнего доступна здесь:

http://curl.haxx.se/docs/manpage.html

Вы можете делать посты, а также получать, HTTPS, показывать заголовки, работать с куки-файлами, базовой и дайджест-аутентификацией HTTP, туннелировать через всевозможные прокси, включая NTLM на * nix и другие.

curl также доступен в виде разделяемой библиотеки с поддержкой C и PHP.

НТН

С

2 голосов
/ 12 января 2010

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

Аналогично, поиск или извлечение ссылок из выбранной страницы тривиально.

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

2 голосов
/ 11 января 2010

Twill довольно хорош и сделан для тестирования. Его можно использовать как сценарий, в интерактивном сеансе или в программе Python.

2 голосов
/ 11 января 2010

Python urllib может быть то, что вы ищете.

В качестве альтернативы powershell предоставляет полную библиотеку .NET http в среде сценариев.

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