お世話になってます。
PHPを学習し始めたばかりの初心者なのですが、スクレイピングで躓いています。
こちらのサイトを参考にコードを作成したのですが実行するとエラーになってしまいます。
error
1Fatal error: Cannot use JonnyW\PhantomJs\Client as Client because the name is already in use in C:\xampp\htdocs\main.php on line 6
実行したPHP
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Goutte\Client; 6use JonnyW\PhantomJs\Client; 7 8class ScrapingController extends Controller 9{ 10 public function fetchText() 11 { 12 $client = Client::getInstance(); 13 $client->getEngine()->setPath('vendor/bin/phantomjs'); 14 15 $request = $client->getMessageFactory()->createRequest('http://localhost/main.html', 'GET'); 16 $response = $client->getMessageFactory()->createResponse(); 17 18 $client->send($request, $response); 19 20 $crawler = new Crawler($response->getContent()); 21 $text = $crawler->filter('div')->text(); 22 var_dump($text); // string(20) " hoge fuga" 23 } 24} 25?>
スクレイピングされるページのHTML(main.html)
HTML
1<html> 2 <body> 3 <div id="text"> 4 <p>hoge</p> 5 <!-- ここにjsでfugaを追加 --> 6 </div> 7 </body> 8 <script type="text/javascript"> 9 //要素の作成 10 var element = document.getElementById('text'); 11 var div = document.createElement('p'); 12 div.textContent = 'fuga'; 13 14 //最後の子要素として追加 15 element.appendChild(div); 16 </script> 17 18</html>
(サイトのサンプルコードのまま)
実行環境
・Windows10pro
・xampp
・PHP 7.1.33
回答よろしくお願いします。
補足
修正したPHP
use JonnyW\PhantomJs\Client
を変更しました。
PHP
1<?php 2 3namespace App\Http\Controllers; 4 5use Goutte\Client; 6use JonnyW\PhantomJs\Client as Client_1; //ここを変更 7 8class ScrapingController extends Controller 9{ 10 public function fetchText() 11 { 12 $client = Client::getInstance(); 13 $client->getEngine()->setPath('vendor/bin/phantomjs'); 14 15 $request = $client->getMessageFactory()->createRequest('http://localhost/main.html', 'GET'); 16 $response = $client->getMessageFactory()->createResponse(); 17 18 $client->send($request, $response); 19 20 $crawler = new Crawler($response->getContent()); 21 $text = $crawler->filter('div')->text(); 22 var_dump($text); // string(20) " hoge fuga" 23 } 24} 25?>
その際、新たなエラーが出ました。(これで全文)
error
1Fatal error: Class 'App\Http\Controllers\Controller' not found in C:\xampp\htdocs\main.php on line 8
クラス'App\Http\Controllers\Controller'がこのPHPに無いということだと思うのですが、そもそもどこでそのクラスを使おうとしているのでしょうか。
補足②
Goutteによるスクレイピングは実現することができ、JavaScriptによるレタリングがなされた後のページのスクレイピングを実現させたく、この質問をしました。動的ページのスクレイピングと本文に明記していませんでした。申し訳ありません。
再度よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー