Пример. Хочется десктопное .Net-приложение для ведения базы данных какого то барахла. И хочется возможности публиковать товары на досках объявлений типа avito, slando, irr. А в базе данных вести централизованный учёт где когда что опубликовано, продано.
Досок много. Подавляющее большинство принимает информацию только через веб интерфейс и вероятно с вариациями AJAX, Flesh, Silverlight. Хочется автоматизировать.
Полностью автоматически вряд ли получиться. Капча, непредсказуемые изменения интерфейсов досок и их логики работы.
То есть неплохо отслеживать где что не сработано делать то вручную и желательно повышенное удобство сопровождения программы.
Знаю, кто то подобным давно занимается и наработок много. Например jcat.ru
Какие средства? Естественно, коммерческая тайна. Конечно написать универсальную программуль в этой теме по-любому не получится. Вариаций может быть масса. А HTML видно самый популярный.
Сам пробовал iMacros. У них компонент для .Net. Напрягает, что скриптовый язык свой, то есть насколько хорошо взаимодействовать с кодом .Net сомнительно. А если требуется разветвлённая логика. В зависимости от значения того то перейти туда-то иначе туда то.
Но ещё больше напрягает стоимость: порядка 100 000 рублей.
Другой вариант Selenium, конкретней WebDriver. Опенсоурсное средство. Под любой браузер. В программе можно запускать браузер управлять содержимым, закрывать. Однако присоединяться к уже запущенному не получается. Или выполнить в фоновом режиме не так просто. Можно делать то же действия без браузера т.н. браузер HtmlUnit, но требуется java машина и запущенным плагином. То есть поставить на другой компьютер такую программуль сложнее. То есть Selenium всё же ближе для тестировщиков.
Для iMacros и selenium есть плагины для записи макросов в браузере руками. А потом предусмотрено вставлять их в код программы.
Ещё вариант. Вероятно для большинства действий достаточно будет System.Net.WebClient. Получать html, отправлять формы на сервер. Быстрее. И просто получать какую то информацию, задавая XPath — не проблема.
Вот сейчас в тупике и не вижу куда лучше копать дальше? Может кто шарящий намекнёт хотя бы?
P.S. Да! И ещё вопрос. Может как то это называется одним, двумя словами?
Я вот знаю слово "Парсинг", как я понял, называют просто получение информации из веб. А запихавание как покороче?
Здравствуйте, d8m1k, Вы писали:
D>P.S. Да! И ещё вопрос. Может как то это называется одним, двумя словами? D>Я вот знаю слово "Парсинг", как я понял, называют просто получение информации из веб. А запихавание как покороче?
Это называется web scraping. Есть, например, Mozenda
D>>P.S. Да! И ещё вопрос. Может как то это называется одним, двумя словами? D>>Я вот знаю слово "Парсинг", как я понял, называют просто получение информации из веб. А запихавание как покороче?
MR>Это называется web scraping. Есть, например, Mozenda
Да, scraping более подходящий термин.
Mozenda, похоже нацелена на "чтение" информации из веб. А на "записывание"?
Здравствуйте, d8m1k, Вы писали:
D>>>P.S. Да! И ещё вопрос. Может как то это называется одним, двумя словами? D>>>Я вот знаю слово "Парсинг", как я понял, называют просто получение информации из веб. А запихавание как покороче?
MR>>Это называется web scraping. Есть, например, Mozenda
D>Mozenda, похоже нацелена на "чтение" информации из веб. А на "записывание"?
Здравствуйте, d8m1k, Вы писали:
D>>>Mozenda, похоже нацелена на "чтение" информации из веб. А на "записывание"?
MR>>Там есть функции сброса информации в БД.
D>Сброса есть. А на взятие информации из БД и отправку её в веб?
Я подробно не изучал, но если есть функции записи в БД, должен быть и способ чтения этой БД. Когда мне понадобилось "сграбить" данные с сайта, я в итоге не пользовался мозендой, а взял HTML Aglity Pack и набросал свою тулзу.
Здравствуйте, d8m1k, Вы писали:
D>P.S. Да! И ещё вопрос. Может как то это называется одним, двумя словами? D>Я вот знаю слово "Парсинг", как я понял, называют просто получение информации из веб. А запихавание как покороче?
Гуглите по словам "спам", "боты", "пожизненный бан".
Если вы — добропорядочный мерчант, то вам на всех этих чудесных местах дадут мерчантские аккаунты с API, где вы сможете размещать полезную всем информацию.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
имхо, Вы не на правильном пути. Даже если вы имитируете браузер, все равно при изменении страницы, программа запостить не сможет объявление. Я использовал human emulator, java script исполняет, но в 3 потока, celeron D 3.2ghz, еле дышал. Ко всему, это всё работает очень не стабильно. Имена полей форм не так часто меняются. Да и достаточно раз зарегистрироваться(вручную), раз спарсить разделы объявлений, а уже софтом объявления размещать. я бы так делал.
интересно будет знать на чем Вы остановились.
а есть еще xrumer, предыдущий комментатор это он и есть