Для моего проекта я использую domcrawler для анализа страниц и извлечения изображений.
Код:
$goutteClient = new Client();
$guzzleClient = new GuzzleClient(array(
'timeout' => 15,
));
$goutteClient->setClient($guzzleClient);
try {
$crawler = $goutteClient->request('GET', $url);
$crawlerError = false;
} catch (RequestException $e) {
$crawlerError = true;
}
if ($crawlerError == false) {
//find open graph image
try {
$file = $crawler->filterXPath("//meta[@property='og:image']")->attr('content');
} catch (\InvalidArgumentException $e) {
$file = null;
}
//if that fails, find the biggest image in the DOM
if (!$file) {
$images = $crawler
->filterXpath('//img')
->extract(array('src'));
$files = [];
foreach ($images as $image) {
$attributes = getimagesize($image);
//stopping here since this is where i'm getting my error
Соответствующая часть находится внизу. Это будет работать некоторое время. Однако иногда я получаю сообщение об ошибке. Например, если $url
было https://www.google.com, то выскочила бы следующая ошибка:
ErrorException (E_WARNING) getimagesize (/images/branding/googlelogo/1x/googlelogo_white_background_color_272x92dp.png): не удалось открыть поток: нет такого файла или каталога
Если I dd($image);
в этой ситуации, $image
равно "/images/branding/googlelogo/1x/googlelogo_white_background_color_272x92dp.png"
.
Тем не менее, если я пытаюсь использовать веб-сайт, который не выдает ошибку, например https://www.harvard.edu, dd($image);
возвращает "https://www.harvard.edu/sites/default/files/feature_item_media/Kremer900x600.jpg"
Другими словами, яне получить полный URL. Как я могу исправить это?