Язык программирования для автоматического перехода на сайт?
Я программировал уже много лет, и у меня есть только один вопрос.
Какой язык программирования позволяет создавать программы, которые могут автоматически перемещаться по веб-сайтам и выполнять различные действия? Например, войдите в систему, перейдите на определенную страницу, заполните формы, извлеките определенный текст и т.д.
Это отличается от макроса, поскольку макрос выполняет только предопределенный набор действий. С другой стороны, программа будет вести себя по-разному в зависимости от того, что отображается на экране.
Может быть, какой-то язык сценариев? Или язык общего назначения. Ваши ответы будут оценены.
Ответы
Ответ 1
Я использую Ruby и watir, чтобы сделать это, очень прямо и работает, автоматизируя IE или Firefox.
при таком подходе браузер обрабатывает любой беспорядок JavaScript, но вы все еще имеете полный доступ к содержимому страницы, поэтому вам просто нужно добавить свою уникальную логику, например, заполнить онлайн-форму.
Ответ 2
Для Perl WWW:: Mechanize является стандартным инструментом для навигации по веб-сайтам. Он обрабатывает файлы cookie, сеансы, знает, как взаимодействовать с формами, выполнять клики и т.д. Он поддерживает состояние по мере его продвижения.
Один недостаток - это не обработка javascript. Есть несколько модулей Perl для взаимодействия с Javascript, но они не интегрированы с WWW:: Mechanize.
Ответ 3
Многие из этих ответов ориентированы на соскабливание приложений. Если это то, что вы хотите, используйте эквивалент WWW:: Mechanize на выбранном вами языке (Perl канонический, Python тоже хорошо работает).
Однако, по вашему вопросу, похоже, что вы, возможно, хотите автоматизировать модульные тесты для веб-сайтов. Если это так, в дополнение к этой структуре для проверки правильности возвращаемого HTML для любой данной страницы, вам также нужна инфраструктура тестирования в браузере.
Два из них выделяются Twill и Selenium.
Они обеспечивают именно то, что вы просите: простой интерфейс для просмотра веб-сайтов с script. Они позволяют больше контролировать ваш просмотр, особенно в отношении javascript и различных типов эффектов, которые проявляются, когда вы двигаетесь вперед и назад на веб-сайте, оставляя след.
Ответ 4
Я считаю, что вы не ищете язык, а фреймворк, который позволит вам это сделать. Обычно это делается с помощью программного обеспечения для очистки веб-страниц. Есть некоторые онлайн-сервисы, например. Mozenda, которые позволяют вам делать простые вещи. Существуют также рамки, которые помогут вам сделать то же самое более строгим образом. У меня есть опыт работы с screen-scraper, который я считаю одним из самых многофункциональных.
Еще один тип фреймворков - веб-искатель - это пройти через веб-сайт и индексировать его (например, для поисковой системы.
Ответ 5
Вы можете использовать LWP:: Simple в Perl.
Вы можете найти много информации в Интернете, но Получение большей части LWP:: Simple - это учебник по Perlmonks.
Ответ 6
Я бы, конечно, пошел на какой-то язык сценариев, а Ruby/Mechanize был моим фаворитом, взгляните на некоторые примеры... Конечно, Perl и Python также являются хорошим выбором. Если не будет плана, чтобы он был частью какого-либо другого приложения, я бы избегал статически типизированных языков - слишком много шаблонов IMHO.
require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
page = agent.get('http://google.com/')
google_form = page.form('f')
google_form.q = 'ruby mechanize'
page = agent.submit(google_form)
pp page
Механизация - действительно отличная библиотека, так как это не просто HTTP GET/POST запрос-и-выборка: она отслеживает файлы cookie, тем самым тщательно подражая реальному поведению веб-браузера.
Ответ 7
WatiN - еще один .Net способ просмотра и выполнения различных действий.
Ответ 8
Практически любой язык будет делать это сейчас, perl, php/curl в linux и asp/С# в Windows.
Проверьте это - Учебник по заполнению PHP-форм
Ответ 9
Вы можете сделать все это с помощью WebRequest объекта в С#
public static void Main ()
{
// Create a request for the URL.
WebRequest request = WebRequest.Create ("http://www.contoso.com/default.html");
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
// Display the status.
Console.WriteLine (response.StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream ();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader (dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd ();
// Display the content.
Console.WriteLine (responseFromServer);
// Cleanup the streams and the response.
reader.Close ();
dataStream.Close ();
response.Close ();
}