理论上可以在不使用服务器端中间件技术的情况下在ActionScript3中构建蜘蛛吗?没有什么非常先进的(只访问HTML页面并将HTML作为文本返回到swf)。
答案 0 :(得分:5)
编辑 (问题已更新为更具体)
如果没有有效的策略文件,您将无法访问随机域。但您可以使用ExternalInterface并设置allowScriptAccess=always以在另一个浏览器框架中打开页面,并通过JavaScript传递结果数据。
原始回答
理论上,任何可以加载和解析网页的语言都可以用来抓取它们 - 问题是:你想要吗?
这里有几点需要考虑:
Flash / Flex主要用于客户端应用程序,即提供精细UI功能和/或可视化的程序。虽然它已经发展成为一个强大的编程环境 - 这就是它最擅长的,所以它应该主要用于它。我的意思是:当然,如果有时间和耐心,你可以用纯汇编语言编写一个Web应用程序 - 但为什么不使用为此发明的工具呢?
ActionScript当然不是您构建HTML解析器的最快语言。该程序将运行单线程,一次只能在一台机器上运行。扩展可能是通过实现P2P network完成的,但同样重要:该技术适用于其他方面,并且有一些解决方案可以更好地创建可扩展的搜索机制。
根据您要抓取的网页类型以及数量,您最终会获得大量数据。迟早,存储,索引和检索您收集的任何数据将比爬行本身更重要。
如果您选择基于文件工作,则必须至少使用AIR,因为标准ActionScript具有非常有限的文件读/写功能 - 没有异步访问方法,如FileStream,您的程序将随着时间的推移变得越来越慢,反应越来越慢。
此外,分布式解决方案将变得更加复杂,因为每个节点都必须保留一部分索引结果,除了搜索和索引之外,您还必须实现某种查找机制,例如{ {3}}。
所以你可能想要使用现有的存储技术 - 数据库和/或搜索引擎。
总而言之,我强烈建议列出您希望蜘蛛拥有的重要功能:
一旦你回答了这些问题,你应该看看可能有助于你实现部分或全部功能的现有工具,并且只有在你完成之后,才能决定实施哪些技术无法解决否则。