寻找屏幕抓取可能值得的例子

时间:2009-08-14 13:59:08

标签: screen-scraping

屏幕抓取似乎是一个有用的工具 - 您可以访问其他人的网站并窃取他们的数据 - 这太棒了!

但是我很难知道这有多大用处。

即使在网络上,大多数应用程序数据也非常特定于该应用程序。例如,假设我从StackOverflow中删除所有问题和答案,或者从谷歌的所有结果中删除(假设这是可能的) - 我留下的数据不是很有用,除非我有一个竞争问题和回答网站(在这种情况下,被盗数据将立即显而易见)或竞争搜索引擎(在这种情况下,除非我有自己的算法,我的数据将很快变得陈旧)。

所以我的问题是,在什么情况下,一个应用程序的数据对某些外部应用程序有用?我正在寻找一个实例来说明这一点。

10 个答案:

答案 0 :(得分:5)

当网站公开提供(仍然)不可用作XML服务的数据时,它非常有用。我有一个客户使用抓取技术将航班跟踪数据提取到他公司的内部网应用程序中。

该技术也用于研究。我有一个客户想要通过词性比较几个在线词典的内容,所有这些网站都必须被删除。

是一种“窃取”数据的技术。所有普通使用限制均适用。许多网站实施CAPTCHA机制来防止抓取,并且解决这些问题是不合适的。

答案 1 :(得分:3)

StackOverflow就是一个很好的例子 - 无需在CC许可下将数据作为they've released it抓取。社区已经在处理统计数据并创建有趣的图表。

ProgrammableWeb上有一大堆流行的mashup示例。您甚至可以在BarCampsHack Days等活动中与其他游戏运动员(O_o)见面(带一个睡袋)。看看Yahoo APIs(特别是Pipes)提供的大量信息,看看开发人员正在做些什么。

不要窃取和重新发布,用数据构建更好的东西 - 理解,搜索或探索它的新方法。始终引用您的数据源并感谢那些帮助您的人。使用它来学习新语言或理解数据或帮助推广semantic web。记住这是为了好玩而不是利润!

希望有所帮助:)

答案 2 :(得分:2)

如果网站的数据可以通过API访问(并且这样做是免费且合法的),但他们还没有实现,屏幕抓取是一种基本上创建该功能的方式为了你自己 实际示例 - 屏幕抓取将允许您创建某种混搭,该混搭结合了整个SO系列网站的信息,因为目前没有API。

答案 3 :(得分:2)

好吧,从大型机收集数据。这就是为什么有些人使用屏幕抓取的原因之一。大型机仍然在金融领域中使用,并且通常是运行在上个世纪编写的软件。编写它的人可能已经退休了,因为这个软件对这些组织非常关键,所以当需要添加一些新代码时,他们真的很讨厌它。因此,screenscraping提供了一个简单的界面,可以与大型机通信,从大型机收集信息,然后将其发送到需要此信息的任何进程。 你说,重写大型机应用程序?那么,大型机上的软件可能非常陈旧。我已经在大型机上看过30多年的软件,用COBOL编写。通常,这些应用程序工作得很好,公司不想冒险重写部分,因为它可能会破坏已经工作了30多年的代码!如果它们没有坏掉,请不要修理它们。当然,可以编写额外的代码,但是在生产环境中使用大型机代码需要很长时间。经验丰富的大型机开发人员很难找到。

我自己也必须在软件项目中使用屏幕抓取功能。这是一个调度应用程序,它必须将输出捕获到它启动的每个子进程的控制台。实际上,这是最简单的屏幕抓取形式,许多人甚至没有意识到,如果将一个应用程序的输出重定向到另一个应用程序的输入,那它仍然是一种屏幕抓取。 :)

基本上,屏幕抓取允许您将一个(Web)应用程序与另一个应用程序连接起来。它通常是一种快速解决方案,在其他解决方案花费太多时间时使用。每个人都讨厌它,但它节省的时间仍然使它非常有效。

答案 4 :(得分:2)

对于一个项目,我们找到了一家(廉价)商业供应商,为特定的文件格式提供翻译服务。供应商没有提供API(毕竟这是一个廉价的供应商),而是有一个网页表格可以上传和下载。

每天有数百个文件,唯一的方法是在Perl中使用WWW::Mechanize,屏幕扫描登录和上传框,提交文件,并保存返回的文件。它很丑陋而且非常脆弱(如果供应商至少改变了网站它可能会破坏应用程序)但它确实有效。它现在已经工作了一年多。

答案 5 :(得分:2)

假设您想从一个流行的体育网站获得分数,该网站没有提供XML Feed或API提供的信息。

答案 6 :(得分:1)

根据我的经验举一个例子。

我需要一份全球主要城市的列表,其中包含我正在构建的iPhone应用程序的纬度和经度。该应用程序将使用该数据以及iPhone上的地理定位功能来显示应用程序的每个用户最接近哪个主要城市(以便不显示确切的位置),并将它们绘制在地球的3D地球上。

我无法在任何地方找到XML / Excel / CSV类型格式的合适列表,但我确实找到了this wikipedia page(大致)我需要的信息。所以我编写了一个快速脚本来抓取该页面并将数据加载到数据库中。

答案 7 :(得分:1)

任何时候您需要一台计算机来阅读网站上的数据。屏幕抓取在任何网站API有用的完全相同的实例中都很有用。但是,有些网站没有自己创建API的资源;屏幕抓取是开发人员的方式。

例如,在Stack Overflow的早期阶段,在Stack Overflow本身提供该功能之前,有人构建了一个工具来跟踪您的声誉随时间的变化。唯一的方法是,因为Stack Overflow没有API,就是屏幕刮擦。

答案 8 :(得分:1)

显而易见的情况是,网络服务不提供反向搜索。您可以在同一数据集上实现反向搜索,但需要抓取整个数据集。

如果反向搜索还需要进行大量的预处理,例如,这可能是合理使用的。因为你需要支持部分匹配。数据源可能没有提供反向搜索选项的技术技能或计算资源。

答案 9 :(得分:0)

我每天都使用屏幕抓取,我运行一些电子商务网站,并且每天都运行屏幕抓取脚本,以便从我的供应商批发网站自动收集产品列表。这使我能够获得几家供应商提供给我的所有产品的最新信息,并允许我因价格变化而标记非经济利润。