Паук в ActionScript3 - PullRequest
       17

Паук в ActionScript3

0 голосов
/ 19 ноября 2011

Теоретически возможно построить паука в ActionScript3 без использования промежуточного программного обеспечения на стороне сервера? Ничего особо сложного (только посещение HTML-страницы и возврат HTML-текста в SWF-файл).

1 Ответ

5 голосов
/ 19 ноября 2011

РЕДАКТИРОВАТЬ (Вопрос был обновлен, чтобы быть более конкретным)

Вы не можете получить доступ к случайным доменам без допустимых файлов политики. Но вы можете использовать ExternalInterface и установить allowScriptAccess = всегда , чтобы открыть страницу в другом фрейме браузера и передать данные результата через JavaScript.

ОРИГИНАЛЬНЫЙ ОТВЕТ

Теоретически, любой язык, который может загружать и анализировать веб-страницы, может быть использован для их сканирования - вопрос в том, хотите ли вы?

Вот несколько вещей, о которых стоит подумать:

  1. Flash / Flex используется в основном для клиентских приложений, то есть программ, которые обеспечивают сложные функции пользовательского интерфейса и / или визуализацию. Хотя он вырос и превратился в мощную среду программирования - это то, что он делает лучше всего, так что именно для этого он должен в первую очередь использоваться. Я имею в виду: конечно, учитывая время и терпение, вы могли бы написать веб-приложение на чистом ассемблере, но почему бы не использовать инструменты, которые были изобретены для этого?

  2. ActionScript, безусловно, не самый быстрый язык, на котором вы можете создать HTML-парсер Программа будет запускаться однопоточно, только на одном компьютере одновременно. Масштабирование, вероятно, может быть выполнено путем реализации P2P-сети , но опять же: эта технология предназначена для других целей, и есть решения, которые намного лучше в создании масштабируемых механизмов поиска.

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

    Если вы решили работать с файлами, вам, по крайней мере, придется использовать AIR, поскольку стандартный ActionScript имеет очень ограниченные возможности чтения / записи файлов - без асинхронного метода доступа, такого как FileStream , ваш со временем программа станет медленнее и менее отзывчивой.

    Кроме того, распределенные решения станут еще более сложными, поскольку каждый узел должен будет хранить часть индексированных результатов, и в дополнение к поиску и индексации вам придется реализовать какой-то механизм поиска, такой как MapReduce .

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

В общем, я бы настоятельно рекомендовал составить список важных функций, которые должны быть у вашего паука:

  • Кто будет работать с вашей программой и какова ее цель?
  • Он предназначен для автоматического запуска или вы хотите, чтобы какое-то взаимодействие с пользователем управляло им?
  • Какие данные вы собираетесь собирать и как вы хотите получить к ним доступ?
  • Сколько данных вы собираетесь хранить, и есть ли у вас инфраструктура, на которой вы можете построить?

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

...