Laravel 使用 Goutte 错误抓取外部网站数据
Laravel Scrape External Website Data using Goutte Error
https://github.com/FriendsOfPHP/Goutte
composer.json:
"php": "^7.1.3",
"fabpot/goutte": "^4.0",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "^6.5",
"laravel/framework": "^6.2",
"laravel/passport": "^8.4",
"laravel/tinker": "^2.0",
"laravel/ui": "^1.2",
"symfony/translation": "4.3.8"
控制器:
use Illuminate\Http\Request;
use App\Http\Requests;
use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;
class getStuff extends Controller
{
public function get(Request $request) {
$client = new Client();
$crawler = $client->request('GET', 'https://www.symfony.com/blog/');
return '';
}
错误:
Symfony\Component\Debug\Exception\FatalThrowableError
Return value of Symfony\Component\DomCrawler\Crawler::createSubCrawler() must be an instance of Symfony\Component\DomCrawler\object, instance of Symfony\Component\DomCrawler\Crawler returned
总是到$crawler = $client->request
就断了。我终生无法弄清楚发生了什么。我尝试了不同的包,删除它,再次添加它。感谢您的协助!
我猜你的机器上安装了两个版本的 PHP。看起来你的命令行版本(运行s 作曲家)是 >= PHP 7.2,但是你的网络服务器的 PHP 版本 运行 是 < PHP 7.2.
在symfony/dom-crawler
中,版本5.0.0 更新了Crawler::createSubCrawler()
方法以具有object
return 类型提示。它还将 PHP 版本依赖项更新为 ^7.2.5
,因此除非 PHP 运行ning composer 的版本 >= ^7.2.5,否则不会安装此版本。 =16=]
但是,Web 服务器的 PHP 运行 版本似乎无法理解 object
类型提示,因此它正在寻找实际的 class命名为 Symfony\Component\DomCrawler\object
。由于 PHP 不理解类型提示,这意味着版本 运行 代码是 < 7.2.0.
您需要确保 Web 服务器用于 运行 代码的 PHP 版本与 运行s 的 PHP 版本相同作曲家安装依赖项。
https://github.com/FriendsOfPHP/Goutte
composer.json:
"php": "^7.1.3",
"fabpot/goutte": "^4.0",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "^6.5",
"laravel/framework": "^6.2",
"laravel/passport": "^8.4",
"laravel/tinker": "^2.0",
"laravel/ui": "^1.2",
"symfony/translation": "4.3.8"
控制器:
use Illuminate\Http\Request;
use App\Http\Requests;
use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;
class getStuff extends Controller
{
public function get(Request $request) {
$client = new Client();
$crawler = $client->request('GET', 'https://www.symfony.com/blog/');
return '';
}
错误:
Symfony\Component\Debug\Exception\FatalThrowableError
Return value of Symfony\Component\DomCrawler\Crawler::createSubCrawler() must be an instance of Symfony\Component\DomCrawler\object, instance of Symfony\Component\DomCrawler\Crawler returned
总是到$crawler = $client->request
就断了。我终生无法弄清楚发生了什么。我尝试了不同的包,删除它,再次添加它。感谢您的协助!
我猜你的机器上安装了两个版本的 PHP。看起来你的命令行版本(运行s 作曲家)是 >= PHP 7.2,但是你的网络服务器的 PHP 版本 运行 是 < PHP 7.2.
在symfony/dom-crawler
中,版本5.0.0 更新了Crawler::createSubCrawler()
方法以具有object
return 类型提示。它还将 PHP 版本依赖项更新为 ^7.2.5
,因此除非 PHP 运行ning composer 的版本 >= ^7.2.5,否则不会安装此版本。 =16=]
但是,Web 服务器的 PHP 运行 版本似乎无法理解 object
类型提示,因此它正在寻找实际的 class命名为 Symfony\Component\DomCrawler\object
。由于 PHP 不理解类型提示,这意味着版本 运行 代码是 < 7.2.0.
您需要确保 Web 服务器用于 运行 代码的 PHP 版本与 运行s 的 PHP 版本相同作曲家安装依赖项。