【问题标题】:Test web by crawling all pages通过抓取所有页面来测试网络
【发布时间】:2012-08-09 13:34:49
【问题描述】:

我在 ASP.NET MVC 3 中开发网站,由于视图是在第一次访问后编译的,有时我会遇到这种情况,我发布的网站有一些带有错误(如拼写错误)的 Vies。

我想创建类似单元测试的东西,它会尝试访问所有页面,以避免视图中的任何错误。

创建另一个将在本地主机上抓取网络的程序应该很容易,但我想将它集成到单元测试循环中。这可能吗?

我应该自己编写简单的爬虫还是应该使用现有的东西?

此外,最好获取页面列表及其连接数,以查看哪些页面可通过多少链接访问。爬虫应该只爬我的网站,而不是外部链接。它还可以帮助查找从起点(索引页)无法访问的页面。

我的网站大约有 100 个页面,所以性能不是问题 :)

提前致谢!

【问题讨论】:

  • 这里有一个article 以防你想写一个简单的爬虫

标签: asp.net asp.net-mvc-3 unit-testing web-crawler


【解决方案1】:

试试“搜索引擎优化工具包”非常好的工具:

使用站点分析模块

Search Engine Optimization Toolkit

网站分析功能

功能齐全的爬虫引擎

可配置数量的并发请求,以允许用户在不进行额外处理的情况下抓取他们的网站。这可以配置为 1 到 16 个并发请求。

支持 Robots.txt,允许您自定义爬虫应分析的位置以及应忽略的位置。

支持站点地图文件,允许您指定要分析的其他位置。

支持覆盖“noindex”和“nofollow”元标记,以便您分析页面以帮助改善客户体验,即使搜索引擎不会处理它们。

可配置的分析限制、要下载的 URL 的最大数量以及每个 URL 的最大下载千字节数。

仅包含来自您的目录或整个站点和子域的内容的可配置选项。

通过丰富的仪表板查看网站分析结果的详细摘要

功能丰富的查询生成器界面,允许您构建自定义报告

快速访问常见任务

显示每个 URL 的详细信息

查看显示独特路线的详细路线分析,以更好地了解搜索引擎到达您的内容的方式

“Linkbot” 是另一种可以帮助您的工具:

Linkbot 是一个屡获殊荣的网站管理实用程序套件,可帮助网站管理员跟踪和修复其网站上的问题。 Linkbot 在一个集成包中包含维护无错误站点所需的所有工具:用于快速站点分析的高性能多任务处理引擎、查找和修复损坏的链接、定位缓慢和过时的页面、查找不再使用的孤立文件、地图了解网站的结构和组织,检查密码保护和安全区域,全面的 HTML 报告,自动生成最新页面,创建网站上所有图片的图库等等!

【讨论】:

  • 这是一个非常好的和强大的工具,它可以解决我的问题。我肯定会检查它,但我宁愿寻求一些更简单的解决方案,可以集成到单元测试框架中,只是为了检查所有页面是否生成没有任何错误。
  • 不知道为什么@KapilKhandelwal 没有为 linkbot 放置任何链接,但它的描述听起来像是广告..
【解决方案2】:

http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx

只需按照此操作,即可在调试或发布中构建视图。当存在视图编译器错误时,构建将失败。

另一方面,如果您仍想抓取以查找损坏的链接,请查看WebDriver

【讨论】:

  • 是的,我知道构建视图,但它将我的编译时间从 6 秒更改为 26 秒(这很痛苦)。而且我只想在发布(运行单元测试)时检查它们,因为有时我只是编译项目以便能够不断更新视图(编译所有视图会抛出我知道的错误)。不过我会检查 WebDriver。
  • 是的,编译视图可能需要一段时间。你也可以投资 ReSharper,它会警告视图文件中的错误或断开的链接,但 R# 不是免费的,除非你的项目是 OSS。 WebDriver 可用于任何 CLR 单元测试框架。另一种选择是 WatiN,但我上次检查时,它无法驱动 Chrome。
【解决方案3】:

夜精灵,

捕获拼写错误的最简单方法是在Release 模式下编译解决方案(而不是默认的Debug 模式),这样,所有视图都被编译并且错误显示在Error List 中。当然,您需要超越这一点(例如查找无法访问的链接),但这肯定会捕获您所有的拼写错误。

【讨论】:

  • 不,我总是在发布模式下编译解决方案以进行发布并且不编译视图(我说的是 Razor 中的视图)。刚试过。此外,如果没有更改 DLL,有时我只会将新视图复制到发布网站。我认为有一个选项可以在构建时预编译所有视图,但不建议这样做。
猜你喜欢
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多