/** * 读取亚马逊产品的名称,评论数 * @Route("/admin/fetch", name="fetch") */ public function fetchAction(Request $request) { if ($productId = $request->get('productId', null)) { // check if the product already in the database, if not created $entityManager = $this->getDoctrine()->getManager(); // Choose a Mink driver. More about it in later chapters. //$driver = new \Behat\Mink\Driver\GoutteDriver(); $driver = new \Behat\Mink\Driver\ZombieDriver( //new \Behat\Mink\Driver\NodeJS\Server\ZombieServer() new \Behat\Mink\Driver\NodeJS\Server\ZombieServer('127.0.0.1', Unity::getAvailablePort()) ); $session = new \Behat\Mink\Session($driver); // start the session $session->start(); //$session->visit("http://www.amazon.com/dp/B00S137T8E/"); // product review link $commentPage = $this->getCommentPage($productId, $session); $product = $entityManager->getRepository('AppBundle:NormalProduct')->findOneBy(array( 'ASIN' => $productId, )); if (!$product) { $product = new NormalProduct(); // get total comments $totalComments = $this->getTotalPages($commentPage); // get product title $productTitle = $this->getProductTitle($commentPage); $product->setASIN($productId); $product->setCommentsCount($totalComments); $product->setTitle($productTitle); $entityManager->persist($product); $entityManager->flush(); } // fetch and save url segment $commentSegments = $this->getCommentUrlSegmentByTotal($product); foreach($commentSegments as $segment) { if(!$entitySegment = $entityManager->getRepository('AppBundle:CommentUrl')->findOneBy(array( 'segment' => $segment))) { $entitySegment = new CommentUrl(); $entitySegment->setSegment($segment); $entitySegment->setProduct($product); $entityManager->persist($entitySegment); $entityManager->flush(); } } $this->addFlash( 'notice', '该产品已经保存到已抓取产品列表,产品评论用户信息已经列入服务器抓取队列!' ); } return $this->render("AppBundle:Fetch:fetch.html.twig"); }