0

我们正在使用Html Agility Pack为基于 HTML 的站点抓取数据;有没有像Html Agility Pack这样的 DLL来抓取基于 flash 的站点?

4

4 回答 4

2

这实际上取决于您要废弃的网站。在这方面有两种类型的网站:

  • 如果站点在 swf 文件中有数据,那么您必须反编译 swf 文件,并读取其中的数据。通过足够的工作,您可能可以通过编程方式完成。但是,如果是这种情况,手动收集数据可能会更容易,因为它可能不会有太大变化。

  • 然而,如果大多数情况下,特别是对于有大量数据的网站,flash 文件实际上是在联系外部 API。在这种情况下,您可以完全忽略闪存并直接访问 API。如果您不确定,只需激活 Firebug 的网络面板,然后开始浏览。如果它使用外部 api,它应该变得很明显。
    一旦找到该 API,您可能可以对如何操作它进行逆向工程,从而为您提供所需的任何数据。

另请注意,如果它是一个足够大的站点,则可能有非闪存方式来获取相同的数据:

  • 它可能有一个移动站点(没有 Flash) - 尝试使用 iPhone 用户代理访问该站点。
  • 它可能有一个用于爬虫的网站(如 googlebot) - 尝试使用 googlebot 用户代理访问该网站。

编辑:如果您谈论的是抓取(抓取意味着从任何随机站点获取数据)而不是抓取(从特定站点获取结构化数据),那么您无能为力,即使 googlebot 也不会抓取 Flash 内容。主要是因为与 HTML 不同,flash 没有标准化的语法,您可以立即分辨什么是文本、什么是链接等...

于 2013-01-28T12:34:55.880 回答
1

HTML Agility Pack 不会给您带来太多的运气。一种方法是使用FiddlerCore之类的东西来代理与 Flash 站点之间的 HTTP 请求。您将启动 FiddlerCore 代理,然后使用 C# WebBrowser 之类的东西转到您要抓取的 URL。当页面加载时,所有这些 HTTP 请求都将被代理,您可以检查它们的内容。但是,您不会得到大多数文本,因为它们在 Flash 中通常是静态的。相反,您将获得通常单独存储的大部分内容(视频、音频,也许还有图像)。与更传统的抓取/爬网相比,这将变慢,因为您实际上必须在浏览器中执行/运行页面。

如果您熟悉所有这些 YouTube 下载器类型的扩展,它们的工作原理相同,只是它们直接拦截来自 FireFox(例如)而不是单独的代理的 HTTP 请求。

我相信谷歌和一些大型搜索引擎与 Adob​​e/Flash 有特殊的安排,并提供了一些软件,让他们的搜索引擎爬虫看到更多谷歌依赖的文本和东西。PDF 内容也是如此。我不知道这个软件是否可以公开使用。

于 2013-01-25T05:49:39.987 回答
0

抓取 Flash 内容会非常复杂,任何声称这样做的组件的可靠性充其量都是值得怀疑的。但是,如果您希望在某些网页上“爬行”或跟随 Flash 动画中的超链接,您可能会遇到Infant的一些运气。Infant 是一个免费的用于网络爬取的 Java 库,并提供有限/尽力而为的 Flash 内容超链接跟踪功能。Infant 不是开源的,但可以免费用于个人和商业用途。无需注册!

于 2013-01-25T20:59:48.993 回答
-1

How about capturing the whole page as an image and running an OCR on the page to read the data

于 2013-01-25T05:35:03.143 回答