【发布时间】:2015-03-16 21:01:46
【问题描述】:
我正在尝试抓取页面并且我对php框架不是很熟悉,所以我一直在尝试学习Symfony2。我已经启动并运行它,现在我正在尝试使用 Goutte。它安装在供应商文件夹中,我有一个用于抓取项目的包。
问题是,从Controller 进行抓取是一种好习惯吗?如何?我一直在搜索,无法弄清楚如何从捆绑包中使用Goutte,因为它深深地埋在文件结构中。
<?php
namespace ontf\scraperBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Goutte\Client;
class ThingController extends Controller
{
public function somethingAction($something)
{
$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony.com/blog/');
echo $crawler->text();
return $this->render('scraperBundle:Thing:index.html.twig');
// return $this->render('scraperBundle:Thing:index.html.twig', array(
// 'something' => $something
// ));
}
}
【问题讨论】:
-
这是一个很好的做法,如果多个控制器操作执行相同的操作,那么使用服务层是一个很好的做法
-
服务层会像 MVC 的另一个补充吗?所以MVCS差不多?
-
没有服务只是一个类,这是显而易见的,它从 DRY 中提出。例如,在您的服务器类中,您有一个
function getText($url){..,您的所有控制器都可以像echo $service->getText('/foo')一样询问服务,而不是重复相同的代码
标签: php symfony web-scraping goutte