ActionScript 3中的蜘蛛

时间:2011-11-19 10:28:43

标签: actionscript-3 theory

理论上可以在不使用服务器端中间件技术的情况下在ActionScript3中构建蜘蛛吗?没有什么非常先进的(只访问HTML页面并将HTML作为文本返回到swf)。

1 个答案:

答案 0 :(得分:5)

编辑 (问题已更新为更具体)

如果没有有效的策略文件,您将无法访问随机域。但您可以使用ExternalInterface并设置allowScriptAccess=always以在另一个浏览器框架中打开页面,并通过JavaScript传递结果数据。

原始回答

理论上,任何可以加载和解析网页的语言都可以用来抓取它们 - 问题是:你想要吗?

这里有几点需要考虑:

  1. Flash / Flex主要用于客户端应用程序,即提供精细UI功能和/或可视化的程序。虽然它已经发展成为一个强大的编程环境 - 这就是它最擅长的,所以它应该主要用于它。我的意思是:当然,如果有时间和耐心,你可以用纯汇编语言编写一个Web应用程序 - 但为什么不使用为此发明的工具呢?

  2. ActionScript当然不是您构建HTML解析器的最快语言。该程序将运行单线程,一次只能在一台机器上运行。扩展可能是通过实现P2P network完成的,但同样重要:该技术适用于其他方面,并且有一些解决方案可以更好地创建可扩展的搜索机制。

  3. 根据您要抓取的网页类型以及数量,您最终会获得大量数据。迟早,存储,索引和检索您收集的任何数据将比爬行本身更重要。

    如果您选择基于文件工作,则必须至少使用AIR,因为标准ActionScript具有非常有限的文件读/写功能 - 没有异步访问方法,如FileStream,您的程序将随着时间的推移变得越来越慢,反应越来越慢。

    此外,分布式解决方案将变得更加复杂,因为每个节点都必须保留一部分索引结果,除了搜索和索引之外,您还必须实现某种查找机制,例如{ {3}}。

    所以你可能想要使用现有的存储技术 - 数据库和/或搜索引擎。

  4. 总而言之,我强烈建议列出您希望蜘蛛拥有的重要功能:

    • 谁将与您的计划合作,其目的是什么?
    • 是否意味着自动运行,或者您是否希望通过某种用户交互来控制它?
    • 您要收集哪些数据,以及如何访问它?
    • 您要存储多少数据?您是否拥有可以构建的基础架构?

    一旦你回答了这些问题,你应该看看可能有助于你实现部分或全部功能的现有工具,并且只有在你完成之后,才能决定实施哪些技术无法解决否则。