从ASPX页面提取数据

时间:2010-09-14 13:11:00

标签: c# asp.net .net web-crawler

我被老板委以一种愚蠢和迟钝的任务。

任务是:给定一个返回带有分页的表的Web应用程序,执行“读取并解析它”的软件,因为没有像提供原始数据的Web服务那样。它就像一个“蜘蛛”或“爬虫”应用程序来窃取无意以编程方式访问的数据。

现在的事情是:应用程序是使用标准的aspx webform引擎制作的,所以没有标准的URL或帖子,但可怕的回发引擎挤满了javascript和不可访问的HTML。分页链接调用臭名昭着的javascript:__ doPostBack(param,param)所以我认为如果我甚至试图模拟这些链接上的点击,它甚至都不会起作用。

还有一些输入来过滤结果,它们也是回发机制的一部分,所以我无法模拟常规帖子来获得结果。

我过去曾被迫做过类似的事情,但它是在类似标准的网站上,在查询字符串中有参数,例如pagesize和pagenumber,所以我能够对它进行排序。

任何人都有一个模糊的想法,如果这是可行的,或者我应该告诉我的老板不要让我做这个迟钝的东西?

编辑:也许我对我必须达到的目标有点不清楚。我必须以另一种格式解析,提取和转换这些数据 - 比方说excel - 而不仅仅是阅读它。这些东西必须自动化,无需用户输入。我认为Selenium不会削减它。

编辑:我刚刚在博客中谈到了这种情况。如果有兴趣的人可以在http://matteomosca.com/archive/2010/09/14/unethical-programming.aspx查看我的帖子并对此发表评论。

4 个答案:

答案 0 :(得分:1)

WatiN将帮助您从UI的角度浏览网站并为您获取HTML,并且您可以找到有关.NET DOM解析器的信息here

答案 1 :(得分:1)

不要忽视建议的工具。

不,您可以编写的解析器不是WatiN或Selenium,这两种方法都适用于那种情况。

PS。如果你提到需要从flash / flex / silverlight /类似物中提取数据的任何内容,这将是一个不同的答案。


顺便说一下,继续与否的理由绝对不是技术性的,而是道德的,甚至可能是合法的。请参阅我对此问题的评论,以了解我对此的看法。

答案 2 :(得分:0)

已经评论过,但认为这实际上是一个答案 您需要一个工具,可以单击客户端链接并等待页面重新加载。 像selenium这样的工具可以做到这一点。 另外(来自评论)WatiN WatiR

答案 3 :(得分:0)

@Insane,CDC的网站有这个确切的问题,数据是公开的(我们纳税人已经付了钱),我正试图从http://wwwn.cdc.gov/qbank/Survey.aspx获取调查和问题数据,这太荒谬了。不是非法的或不道德的,只是一个可怕的实施,似乎是故意难以获取数据(搜索引擎也无法访问)。

我认为Selenium将为我们工作,感谢您的建议。