РЕДАКТИРОВАТЬ (Вопрос был обновлен, чтобы быть более конкретным)
Вы не можете получить доступ к случайным доменам без допустимых файлов политики. Но вы можете использовать ExternalInterface и установить allowScriptAccess = всегда , чтобы открыть страницу в другом фрейме браузера и передать данные результата через JavaScript.
ОРИГИНАЛЬНЫЙ ОТВЕТ
Теоретически, любой язык, который может загружать и анализировать веб-страницы, может быть использован для их сканирования - вопрос в том, хотите ли вы?
Вот несколько вещей, о которых стоит подумать:
Flash / Flex используется в основном для клиентских приложений, то есть программ, которые обеспечивают сложные функции пользовательского интерфейса и / или визуализацию. Хотя он вырос и превратился в мощную среду программирования - это то, что он делает лучше всего, так что именно для этого он должен в первую очередь использоваться. Я имею в виду: конечно, учитывая время и терпение, вы могли бы написать веб-приложение на чистом ассемблере, но почему бы не использовать инструменты, которые были изобретены для этого?
ActionScript, безусловно, не самый быстрый язык, на котором вы можете создать HTML-парсер Программа будет запускаться однопоточно, только на одном компьютере одновременно. Масштабирование, вероятно, может быть выполнено путем реализации P2P-сети , но опять же: эта технология предназначена для других целей, и есть решения, которые намного лучше в создании масштабируемых механизмов поиска.
В зависимости от того, какие веб-страницы вы собираетесь сканировать и сколько, у вас будет много данных. Рано или поздно сохранение, индексирование и извлечение любых собранных вами данных станет гораздо важнее, чем сам процесс сканирования.
Если вы решили работать с файлами, вам, по крайней мере, придется использовать AIR, поскольку стандартный ActionScript имеет очень ограниченные возможности чтения / записи файлов - без асинхронного метода доступа, такого как FileStream , ваш со временем программа станет медленнее и менее отзывчивой.
Кроме того, распределенные решения станут еще более сложными, поскольку каждый узел должен будет хранить часть индексированных результатов, и в дополнение к поиску и индексации вам придется реализовать какой-то механизм поиска, такой как MapReduce .
Так что вы, вероятно, захотите использовать существующую технологию хранения - базу данных и / или поисковую систему.
В общем, я бы настоятельно рекомендовал составить список важных функций, которые должны быть у вашего паука:
- Кто будет работать с вашей программой и какова ее цель?
- Он предназначен для автоматического запуска или вы хотите, чтобы какое-то взаимодействие с пользователем управляло им?
- Какие данные вы собираетесь собирать и как вы хотите получить к ним доступ?
- Сколько данных вы собираетесь хранить, и есть ли у вас инфраструктура, на которой вы можете построить?
После того, как вы ответите на эти вопросы, вы должны взглянуть на существующие инструменты, которые могут помочь вам реализовать некоторые или все функции, и только после того, как вы это сделаете, определитесь с технологией для реализации того, что не может быть решено. в противном случае.