Wis*_*nda 3 php web-scraping laravel goutte guzzle
我遇到了这个错误...但客户端已定义。
我的代码是这样的
use Goutte\Client;
use Illuminate\Http\Request;
use GuzzleHttp\Client as GuzzleClient;
class WebScrapingController extends Controller
{
public function doWebScraping()
{
$goutteClient = new Client();
$guzzleClient = new GuzzleClient(array(
'timeout' => 60,
'verify' => false
));
$goutteClient->setClient($guzzleClient);
$crawler = $goutteClient->request('GET', 'https://duckduckgo.com/html/?q=Laravel');
$crawler->filter('.result__title .result__a')->each(function ($node) {
dump($node->text());
});
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这一行有错误
$goutteClient->setClient($guzzleClient);
Run Code Online (Sandbox Code Playgroud)
goutte: "^4.0"
guzzle: "7.0"
Laravel 框架: "6.20.4"
这个答案是关于创建Goutte客户端的实例,一个简单的 PHP Web Scraper
直接在 Goutte Client 实例中传递 HttpClient(guzzle httpclient , symfony httpclient) 实例。
use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;// or use GuzzleHttp\Client as GuzzleClient;
$client = new Client(HttpClient::create(['timeout' => 60]));
// or
// $guzzleClient = new GuzzleClient(['timeout' => 60, 'verify' => false]); // pass this to Goutte Client
Run Code Online (Sandbox Code Playgroud)
use Goutte\Client;
use GuzzleHttp\Client as GuzzleClient;
$goutteClient = new Client();
$guzzleClient = new GuzzleClient(['timeout' => 60]);
$goutteClient->setClient($guzzleClient);
Run Code Online (Sandbox Code Playgroud)