PHP & CURL выскабливание - PullRequest
       121

PHP & CURL выскабливание

0 голосов
/ 25 февраля 2019

У меня проблема при запуске этого скрипта в Google Chrome, я получил пустую страницу.Когда я использую другую ссылку веб-сайта, он работает успешно.Я не понимаю, что происходит.

$curl = curl_init();

$url = "https://www.danmurphys.com.au/dm/home";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);

echo $output;

1 Ответ

0 голосов
/ 25 февраля 2019

Есть некоторые условия, которые делают ваш результат пустым.Например:

  1. Ошибка скручивания.
  2. Перенаправление без тела ответа, и скручивание не следует за перенаправлением.
  3. Целевой хост не дает никакого ответаbody.

Итак, здесь вы должны выяснить проблему.

  • Для первой возможности используйте curl_error и curl_errno, чтобы подтвердить, что скручивание не было 'ошибка во время выполнения.
  • Для второго используйте опцию CURLOPT_FOLLOWLOCATION, чтобы убедиться, что скручиваемость следует за перенаправлением.
  • Для третьей возможности мы можем использовать curl_getinfo.Возвращает массив, который содержит «size_download».Size_download показывает длину тела ответа.Если он равен нулю, поэтому при печати вы видите пустую страницу.

Еще раз, попробуйте использовать var_dump, чтобы просмотреть вывод (только для целей отладки).Есть вероятность, что curl_exec возвращает bool false или null.Если вы напечатаете bool false или null, он покажет пробел.

Вот пример использования всех из них.

<?php

$curl = curl_init();
$url = "https://www.danmurphys.com.au/dm/home";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

$output = curl_exec($curl);
$info = curl_getinfo($curl);
$err = curl_error($curl);
$ern = curl_errno($curl);

if ($ern) {
    printf("An error occurred: (%d) %s\n", $ern, $err);
    exit(1);
}
curl_close($curl);

printf("Response body size: %d\n", $info["size_download"]);

// Debug only.
// var_dump($output);

echo $output;

Надеюсь, это поможет вам.

Обновление:

Вы можете использовать CURLOPT_VERBOSE для подробного просмотра информации о запросах и ответах.Просто добавьте это

curl_setopt($curl, CURLOPT_VERBOSE, true);

Это не должно быть напечатано, curl напечатает его для вас во время выполнения.

...