下载晨星网页进行screenscraping

时间:2011-07-15 08:09:15

标签: web screen-scraping finance downloading

我希望能够截取Morningstar网页。晨星公司提供有关共同基金的信息,我经常查询但在其他地方找不到,即

  1. 与基准相比的总回报
  2. 与同行相比的总回报
  3. 百分位数排名
  4. 以下是一个示例:morningstar example

    作为屏幕抓图的前奏,我需要能够下载包含所需内容的网页。不幸的是,当我尝试使用Java SE6或wget来检索上面的示例链接时,我只获得了一部分html(显示总返回数字的表格不存在)。如果我使用浏览器(Chrome),我会得到相同的结果,仅将页面保存为html。我注意到如果我使用我的浏览器保存整个页面(html,js,css和其他所有内容),下载的html确实包含有趣的信息。

    我有两个问题:

    1. 如何以编程方式下载整个html文件?虽然我用Java编写这个程序,但我不介意调用外部工具。
    2. 为什么我上面提到的尝试没有产生我期待的HTML?
    3. 感谢。

      作为旁注,我将Yahoo Finance和YQL / datatables视为替代品,但Yahoo Finance并未提供百分位排名。如果你查看共同基金的表现,你会看到排名的N / A值。 Yahoo Finance example。不幸的是,这将排除使用YQL /数据表。

      关于晨星版权的任何问题,我在个人非商业用途中进行屏幕抓取,其版权声明允许在第二段的最后一句中使用:

        

      您有权使用其中包含的私人信息,   仅限非商业用途。 Morningstar Copyright

3 个答案:

答案 0 :(得分:3)

要下载晨星网页,我需要一个可以下载和解释与网页相关的javascript代码的工具。 StackOverflow上提到了许多用于不同编程语言和浏览器的工具。以下是我最后使用的内容:

  • htmlunit - 用于Java程序的无GUI浏览器
  • htmlunitscripter - 一个自动生成htmlunit代码的firefox附加组件

答案 1 :(得分:1)

因此该页面广泛使用XMLHttpRequest来填充数据,这意味着您的scraper必须执行javascript评估。如果您使用Chrome中的开发人员工具,则可以看到用于构建页面的HTML和用于构建表格的JSON数据。

为了抓取这个,我会尝试使用Internet Explorer,因为它可以托管整个页面并执行javascript评估。可能有其他方法可以使用API​​,例如WebKit,但IE应该可以直接使用。

答案 2 :(得分:0)

你在http://irobotsoft.com试过irobot吗?您可以通过以下方式进行验证:

  • 转到网址
  • 标记感兴趣的数据
  • 添加汇整数据操作
  • 测试操作并查看是否提取了您想要的数据

他们有一个论坛,您可以在其中询问一般的屏幕搜索问题