C# 刮网

C# 刮网,c#,screen-scraping,C#,Screen Scraping,只是好奇:现在你发现什么是你创建自动屏幕抓取的最佳工具?.Net敏捷性包是一个不错的选择吗?如何处理使用大量AJAX的网站?我发现,如果页面有一个非常静态的布局,那么就非常适合获取我需要的所有数据。我从未遇到过一个页面无法处理,也没有得到我想要的结果 如果您发现页面是用大量动态代码呈现的,那么您需要做的不仅仅是下载页面,还需要实际执行页面 要做到这一点,您需要类似于库的东西(一个围绕页面的.NET包装器),它允许您下载页面并实际执行Javascript。然后,一旦您确定文档已完全呈现,您就可以获

只是好奇:现在你发现什么是你创建自动屏幕抓取的最佳工具?.Net敏捷性包是一个不错的选择吗?如何处理使用大量AJAX的网站?

我发现,如果页面有一个非常静态的布局,那么就非常适合获取我需要的所有数据。我从未遇到过一个页面无法处理,也没有得到我想要的结果

如果您发现页面是用大量动态代码呈现的,那么您需要做的不仅仅是下载页面,还需要实际执行页面


要做到这一点,您需要类似于库的东西(一个围绕页面的.NET包装器),它允许您下载页面并实际执行Javascript。然后,一旦您确定文档已完全呈现,您就可以获得页面详细信息。

有关我使用的基本信息:

  • -明显快于标准的
    HttpWeb*
    (初步测试表明大约快25%)
  • -

我还没有启用JavaScript,但我计划使用。这要求您调用非托管代码,但V8的性能证明了这一点。

对于自动屏幕抓取,Selenium是一个很好的工具。有两件事-1)安装Selenium IDE(仅适用于Firefox)。2) 安装Selenium RC服务器

启动Selenium IDE后,转到您尝试自动化的站点,并开始记录您在该站点上执行的事件。将其视为在浏览器中录制宏。之后,您将获得所需语言的代码输出

正如您所知,Browsermob使用Selenium进行负载测试,并在浏览器上自动执行任务

我上传了一段时间前制作的ppt。这将为您节省大量时间-

在上面的链接中选择定期下载选项

我花了大量的时间来解决这个问题,所以我认为这可能会节省一些人的时间。

现在最好的工具是,它不仅能提供您想要的功能(Javascript、自动化),而且还可以提供您不必自己运行的功能。。。当然,我指的是使用云服务。这种方法将节省您的网络带宽,更快地交付结果(因为它可以比您最终可能开发的自定义解决方案更好地扩展),最重要的是,可以为您节省it和维护方面的麻烦

关于这一点,请查看名为()的刮片解决方案。我已经在上写了一篇关于它的文章


希望这能有所帮助。

不确定在HttpWebRequest/HttpWebResponse实例上内置异步操作支持时,为什么要使用异步HTTP客户端。这些操作会下降到网络级别上使用IO完成端口的方法,而不仅仅是在另一个线程上使用阻塞套接字。@casperOne我的异步HTTP客户端实现也使用完成端口。我在AmazonEC2机器上用HttpWeb*vs AsyncHTTP客户端运行了8次(高CPU 8个虚拟核心/20个计算单元和7GB RAM),基于HttpWeb*的客户端大约慢了25%。HttpWeb*平均每秒获得约90个网页,而异步Http客户端每秒获得约120个网页;我不符合25%的“多”的条件。你应该在你的答案中加入更多的定量值,依我看。@casperOne,我不记得我们数据中心的HttpWeb*结果是什么,但是异步套接字每秒的页面数超过了350页。也许“快得多”有点强,我将其改为“明显快得多”。Internet Explorer呢?@aloneguid这是一个非常糟糕的主意,因为您必须使用MSHTML,这意味着您需要一个单线程COM单元,而在服务器端,这将成为一个巨大的问题。