在asp.net网站上使用哪种技术来运行爬虫和更新数据库?

时间:2012-01-14 14:25:33

标签: c# asp.net database wcf

我正在为大学开发一个项目,我需要一些关于开发的建议。它是一个网站,显示链接,图像等其他网站的信息。

我已经为网站准备了以下模型。

Home.aspx页面,显示来自表(sql server)的数据。

我编写了一个爬虫(在c#中),它可以抓取(获取数据)所需的网站数据。

我想要一些方法,我可以在后端运行爬虫一段时间间隔,它可以在表中插入更新。我希望我可以在我的数据库中获取更新信息,以便Home.aspx显示更新的信息。 (就像谷歌新闻网站的缩小版本一样)

我想在共享托管环境中托管wesbite(即第三方托管服务提供商公司,可以使用IIS平台)

我向不同的.NET论坛和社区发布了simliar情况,他们提出了许多不同的内容,例如

  • 创建一个Web服务(真的有必要吗?)

  • 使用WCF

  • 创建一个控制台应用程序并运行Windows任务sheduler(可以使用asp.net(win forms网站)和共享托管)

  • 在本地计算机上运行搜寻器并相应地更新数据库。 (不,我想在网上一切)等等

请建议我一个明确的出路,以便我完成任务。请提出适合我项目的优化技术和方法。

...等待

...谢谢

2 个答案:

答案 0 :(得分:3)

您的共享主机约束确实会影响技术限制。

理论上,托管爬虫的最佳方式是Windows服务,因为您可以利用Windows服务配置。服务总是启动,可以在启动时自动启动,在事件日志中写入错误,可以在失败后自动重启......

然后,你Home.aspx将成为IIS中的常规网站。

如果您真的呆在共享主机上(无法设置服务),我会将爬虫作为在您的应用程序启动时运行的模块。

问题是,如果您的网站未被使用,IIS应用程序池将无法永久存在,并且可能会阻止爬网程序。它是可配置的,但我不知道在共享主机中有多少。

在IIS 7.5中,考虑在应用程序预热时启动模块

最后,如果您需要间隔时间(如午夜的每一天)运行爬网程序,如果您的共享主机不允许您设置任务计划,请考虑Quartz Framework,它允许您在内部执行任务调度你的申请(没有操作系统的干预)

答案 1 :(得分:2)

  • 将您的抓取工具代码集成到aspx页面
  • 在主机上设置任务计划程序,每隔X分钟调用该页面
  • 调用页面时检查localhost是否已调用该页面
    • 如果localhost调用它,则运行爬网例程和
    • 如果localhost没有调用它则抛出404错误