Возврат кортежа является обычным способом сделать это в Python.
Я использовал Ruby и watir для этого, это очень просто и работает путем автоматизации IE или Firefox.
с таким подходом браузер обрабатывает любой беспорядок JavaScript , но вы по-прежнему имеете полный доступ к содержимому страницы , поэтому вам просто нужно добавить свою уникальную логику, например, заполнение онлайн-формы.
] Для Perl WWW :: Mechanize является стандартным инструментом для навигации по веб-сайтам. Он обрабатывает файлы cookie, сеансы, знает, как взаимодействовать с формами, выполнять клики и т. Д. Он поддерживает состояние в процессе работы.
Единственный недостаток - это не обработка javascript. Есть несколько модулей Perl для взаимодействия с Javascript, но они не интегрированы с WWW :: Mechanize.
Многие из этих ответов ориентированы на парсинг приложений. Если это то, что вы хотите, используйте эквивалент WWW :: Mechanize на выбранном вами языке (Perl является каноническим, Python также работает хорошо).
Однако из вашего вопроса, похоже, вы хотите автоматизировать модульные тесты для веб-сайтов. В этом случае в дополнение к этой структуре для проверки правильности возвращаемого HTML для любой данной страницы вам также понадобится среда тестирования в браузере.
Два, которые выделяются, - это Twill и Selenium .
Они предоставляют именно то, о чем вы просите: простой интерфейс для просмотра веб-сайтов с помощью скрипта. Они позволяют лучше контролировать ваш просмотр,
Я считаю, что вы ищете не язык, а структуру, которая позволит вам это сделать. Обычно это делается с помощью программного обеспечения для очистки веб-страниц . Есть несколько онлайн-сервисов, например Mozenda , которые позволяют делать простые вещи. Существуют также фреймворки, которые помогут вам сделать то же самое более строго. У меня есть некоторый опыт работы с screen-scraper , который, на мой взгляд, является одним из самых многофункциональных.
Еще одним типом фреймворка является поисковый робот - он проходит через веб-сайт и индексирует его (как в поисковой системе.
Вы можете использовать LWP :: Simple в Perl.
Вы можете найти много информации в Интернете, но Получение большего от LWP :: Simple - это учебник по Perlmonks.
Я бы определенно выбрал какой-нибудь язык сценариев, из которых мне больше всего нравится 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
Mechanize - действительно отличная библиотека, поскольку это не просто HTTP-запросы GET / POST и -fetch: отслеживает файлы cookie, таким образом имитируя реальное поведение веб-браузера.
WatiN - это еще один способ .Net просматривать и выполнять различные действия.
Все это можно сделать с помощью объекта WebRequest в C #
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 ();
}
Практически любой язык теперь сделает это: perl, php / curl в Linux и asp / C # в Windows.
Проверьте это - Учебник по заполнению форм PHP