Python 在MVC模式的框架中,屏幕抓取模块将位于何处?
在MVC模式的框架中,屏幕抓取模块最合理的位置在哪里?在模型中还是在控制器中?或者它完全超出了这种模式?从某种意义上说,screen scraper是应用程序的用户——我认为它是MVC之外的一部分,与控制器交互,就像网页向控制器发送信息一样。这样,如果界面发生变化,就可以很容易地在上面放置一个网页 我想刮板只是用来收集数据的 如果对数据进行刮取和存储,则此过程不会简单地落入M V或C。您可以在定义的时间间隔内将此刮取过程作为cron作业运行,存储数据,然后定义模型以访问数据 我不建议每次控制器请求模型时调用报废流程,除非您正在缓存报废请求 编辑:Python 在MVC模式的框架中,屏幕抓取模块将位于何处?,python,ruby-on-rails,model-view-controller,Python,Ruby On Rails,Model View Controller,在MVC模式的框架中,屏幕抓取模块最合理的位置在哪里?在模型中还是在控制器中?或者它完全超出了这种模式?从某种意义上说,screen scraper是应用程序的用户——我认为它是MVC之外的一部分,与控制器交互,就像网页向控制器发送信息一样。这样,如果界面发生变化,就可以很容易地在上面放置一个网页 我想刮板只是用来收集数据的 如果对数据进行刮取和存储,则此过程不会简单地落入M V或C。您可以在定义的时间间隔内将此刮取过程作为cron作业运行,存储数据,然后定义模型以访问数据 我不建议每次控制器请
cron可以是控制器,但不能公开调用。这取决于您计划如何实现scraper。如果你要有一个用户界面,你点击一个按钮来抓取一个屏幕,那么它将在所有三个界面中(M、V和C)。如果它是一个后台进程(如前所述),那么它应该是M和C。如果您将它设计为一个模型,您可以将其称为模型。然后可以在控制器内轻松使用:
def update
@company = Company.find(params[:id])
@scraper = Scraper.find(:page => some_url, :method => :rip)
@scraper.product_details.each do |params|
@company.products.create(params)
end
end
当您将scraper的输出格式设计为与其他对象(例如持久存储的列映射)兼容时,它总是很方便的
拥有“类似模型”的对象通常很方便。在这种情况下,您可以将scraper视为另一个网站的接口,而不是数据库,在这方面它与ActiveResource没有什么不同。没有规则规定必须使用ActiveRecord构建模型。屏幕刮板在web应用程序中的作用是什么?刮板的作用是收集数据。