Сценарии HTTP более эффективно

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

8
задан Zombies 11 January 2010 в 16:15
поделиться

12 ответов

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

6
ответ дан 5 December 2019 в 04:42
поделиться

На ум приходят два способа:

  • Используя инструмент командной строки, такой как популярный ffmpeg , однако вам почти всегда понадобится собственный сервер (или очень хороший администратор сервера/хостинговая компания), чтобы получить это

  • С помощью плагина « screenshoot » для LeyTail Video player , который позволяет создавать

-121--1228209-

Как насчет использования PHP + завиток или просто bash?

-121--3432327-

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

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

2
ответ дан 5 December 2019 в 04:42
поделиться

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

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

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

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

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

HTH

C.

3
ответ дан 5 December 2019 в 04:42
поделиться

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

-121--1705548-

Возможно, лучше использовать метод Substring (int startIndex, int length):

string listItem = listBox1.SelectedItem.toString();
listItem = listitem.SubString(0, listItem.IndexOf("~"));
-121--4551139-

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

2
ответ дан 5 December 2019 в 04:42
поделиться
-

Если у вас есть простые потребности (извлечь страницу, а затем проанализируйте его), трудно победить LWP :: просто и 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
ответ дан 5 December 2019 в 04:42
поделиться

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

6
ответ дан 5 December 2019 в 04:42
поделиться

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

6
ответ дан 5 December 2019 в 04:42
поделиться

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

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

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

4
ответ дан 5 December 2019 в 04:42
поделиться

Похоже, что метод должен быть статическим (т.е. он не имеет доступа к данным членам и не нуждается в вызове экземпляра). Поскольку вы использовали термин «статический класс», я понимаю, что весь класс, вероятно, посвящен утилитоподобным методам, которые могут быть статичными.

Однако Java не позволяет реализовать метод, определяемый интерфейсом, как статический. Поэтому, когда вы (естественно) пытаетесь сделать метод статичным, вы получаете ошибку «невозможно скрыть-экземпляр-метод». (Спецификация языка Java упоминает об этом в разделе 9,4 : «Обратите внимание, что метод, объявленный в интерфейсе, не должен объявляться статическим, или возникает ошибка компиляции, поскольку статические методы не могут быть абстрактными».

До тех пор, пока метод присутствует в xInterface , а класс реализует xInterface

Если вы не можете изменить интерфейс (или не хотите), вы можете сделать несколько вещей:

  • Сделать класс одиночным: сделать конструктор частным и иметь статический член данных в классе для хранения единственного существующего экземпляра. Таким образом, вы будете вызывать метод для экземпляра, но, по крайней мере, вы не будете создавать новые экземпляры каждый раз, когда вам потребуется вызвать метод.
  • Реализуйте 2 методы в классе: метод экземпляра (как определено в xInterface ) и статический метод. Метод экземпляра будет состоять из одной строки, которая делегирует статический метод.
-121--691428-

Посмотрите на http://ffmpeg.org/ вместе с этим обсуждением http://board.phpbuilder.com/showthread.php?10327812-How-to-install-ffmpeg-php-to-create-thumbnails-from-videos

-121--1228207-

Как насчет использования PHP + Завиток, или просто bash?

0
ответ дан 5 December 2019 в 04:42
поделиться

Можно также использовать массив объектов и цикл for, если это необходимо сделать много раз.

-121--3572514-

Чтобы развернуть решение Артура Томаса, необходимо создать объединение без параметра WHERE в подвыборах, чтобы можно было создать универсальное представление:

SELECT A.Name as Animal, B.Name as Zoo FROM A, AtoB, B
    WHERE AtoB.A_ID = A.ID && B.ID = AtoB.B_ID 
UNION
SELECT C.Name as Animal, B.Name as Zoo FROM C, CtoB, B
    WHERE CtoB.C_ID = C.ID && B.ID = CtoB.B_ID

Затем можно выполнить запрос, например:

SELECT Animal FROM zoo_animals WHERE Zoo="Seattle Zoo"
-121--4180472-

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

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

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

2
ответ дан 5 December 2019 в 04:42
поделиться

Некоторые Ruby Библиотеки:

  • httparty: Действительно интересно, философия интересна.
  • Механизируйте: Классическая хорошая библиотека веб-автоматизации веб-автоматизации.
  • Scrubyt: Пазки на первый взгляд, но весело использовать.
0
ответ дан 5 December 2019 в 04:42
поделиться

Из руководства CodeIgniter о безопасности :

GET, POST и COOKIE данные

GET просто запрещены CodeIgniter, поскольку система использует Сегменты URI, а не традиционные Последовательности запроса URL (если у вас нет параметр последовательности запроса включен в конфигурационный файл). Глобальный массив GET: отменяется классом Input во время работы системы инициализация.

Прочитайте эту запись форума для возможных решений ( становится интересным на полпути на странице 1 ).

-121--3509372-

Было бы неплохо, но я вижу, что многие люди говорят, что они хотят его для привязки данных, что невозможно, поскольку он использует отражение.

-121--2300846-

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

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

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

6
ответ дан 5 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: