如何刮取不同格式/布局的网页?

时间:2009-10-28 02:55:11

标签: screen-scraping

我需要从SEC website获取10-K表格报告(即美国公司的年度报告)。

问题是,公司不会使用完全相同的格式来提交这些数据。因此,对于例如,2个不同公司的房地产数据可以显示如下

1st company

Property name   State  City     Ownership   Year  Occupancy Total Area
-------------   -----  ------   ---------   ----  --------- ----------
ABC Mall         TX    Dallas   Fee         2007    97%       1,347,377
XYZ Plaza        CA    Ontario  Fee         2008    85%       2,252,117



2nd company

Property          % Ownership  %Occupany  Rent   Square Feet
---------------   -----------  ---------  -----  -----------
New York City
  ABC Plaza       100.0%        89.0%     38.07    2,249,000 
  123 Stores      100.0%        50.0%     18.00    1,547,000 
Washington DC Office
  12th street     .......
  2001, J Drive   .......

etc.

同样,其他公司的数据布局可能完全不同。

我想知道除了编写复杂的正则表达式搜索之外,是否有更好的方法来删除此类异类数据。

我可以自由地使用Java,Perl,Python或Groovy来完成这项工作。

1 个答案:

答案 0 :(得分:3)

我倾向于保留一个元文件库,用于描述您要从中抓取数据的每个页面的布局,并在尝试获取数据时使用它。

通过这种方式,您不需要复杂的reg-ex命令,如果站点更改其设计,您只需更改单个文件即可。

您决定如何创建元文件取决于您,但相关类名或标签之类的内容可能是一个良好的开端。

然后描述如何从该标记中提取数据。

不确定是否有工具可以完成所有这些工作。

另一种更好的方法可能是联系这些网站的所有者,看看他们是否以WebService的形式提供了一个Feed,或者您可以使用它来获取数据。拯救了我应该想到的很多心痛。