Парсинг посредством Curl

285
16 июня 2017, 10:36

Добрый день. Пытаюсь получить данные с сайта azlyrics.com Код следующий:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://azlyrics.com');
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36');
curl_setopt($ch, CURLOPT_TIMEOUT,5); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Host: www.azlyrics.com',
'Connection: keep-alive',
'Cache-Control: max-age=0',
'Upgrade-Insecure-Requests: 1',
'User-Agent: Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Accept: 
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding: gzip, deflate, sdch',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
'Cookie: __atuvc=1%7C20%2C0%7C21%2C2%7C22%2C11%7C23%2C17%7C24; 
__utma=190584827.275519439.1495187050.1497360209.1497447294.9; 
__utmz=190584827.1497447294.9.6.utmcsr=azlyrics.com|utmccn=
(referral)|utmcmd=referral|utmcct=/'
));
curl_exec($ch); 
if(curl_errno($ch))
{
    echo 'Ошибка curl: ' . curl_error($ch);
}
curl_close($ch); 

Выдает ошибку "Empty reply from server". Другие же сайты парсятся нормально. Что не так с этим не могу понять. Возможно и в коде у меня какая-то мелкая ошибка, или на сайте защита от парсинга непростая стоит. Вообщем направьте пожалуйста на путь истинный. Интересно понять в чем же там проблема.

P.S.: смена хостинга решила данную проблему

Answer 1

Я хочу предложить вам более простой способ без curl

$el = '\r\n';
$settings = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: ru".$el.
              "Cookie: key=val".
                      "key1=val1".$el.
              "Другие header`ы"
  )
);
$res = stream_context_create($settings);
$result = file_get_contents('http://azlyrics.com', false, $res);
READ ALSO
Регулярка - выбрать по шаблону с конца строки

Регулярка - выбрать по шаблону с конца строки

Не получается составить шаблон для последней части строки

172
Wordpress - Вывести контент страницы single.php

Wordpress - Вывести контент страницы single.php

При создании темы, используется плагин Custom Post Type UI

306
Почему не срабатывает PJAX форма?

Почему не срабатывает PJAX форма?

Первый раз решил применить pjax на сайте, но наткнулся на такую ошибку в консоле:

267
Фатальная ошибка Woocommerce: get_billing_country()

Фатальная ошибка Woocommerce: get_billing_country()

После обновления Wordpress (48) and Woocommerce (3

218