Nyx*_*nyx 5 php screen-scraping resque web-scraping laravel
我正在使用Laravel 3制作一个网络刮板并拥有一个队列系统resque.
问题:我应该在哪里放置抓取逻辑代码?
在工人/工作班?
在由worker/job类静态调用的库类中?
在控制器功能中并且工作者/作业类触发控制器功能?
我目前在控制器功能中有它,所以我可以通过转到它的URL测试它.这也允许使用Cron重复作业,因为resque不允许重复作业.我仍然需要保留这种测试抓取功能的简单方法.
尝试:这是我在想的,你将如何为此目的组织代码?
工人阶级
class ScraperWorker
{
public function perform()
{
$url = $this->args['url']
Scraper::do_scrape($url);
}
}
Run Code Online (Sandbox Code Playgroud)
刮痧班
class Scraper
{
public static function do_scrape($url) {
//some scraping code
}
}
Run Code Online (Sandbox Code Playgroud)
控制器类
用于快速测试,以及用于Cron作业
class Scraper_Controller extends Base_Controller {
public function test_scrape($url) {
Scraper::do_scrape($url);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为你走在正确的道路上。您可以更改的一件事是使 Scraper 及其方法不是静态的。这不会使它变得更难使用,但更容易进行单元测试。当 Scraper 变得更加复杂并且需要配置时,这一点在以后变得尤其重要。
附言。检查PHP-Spider:一个可扩展且可配置的蜘蛛/抓取器。它可以为您节省很多工作。完全披露:我写的。
| 归档时间: |
|
| 查看次数: |
2494 次 |
| 最近记录: |