2013-03-28 1 views
0

TI хотят захватить удаленный сайт HTML-код, для этого я использую CURL, это мой кодCURL не возвращает источник всего HTML

$URL = "http://example.com/"; 

    $ch = curl_init(); 


    curl_setopt($ch, CURLOPT_URL, $URL); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); 


    $content = curl_exec($ch); 
    curl_close($ch); 

Это хорошо работает практически для каждых сайтов, я получаю полное содержание HTML.

Но есть 1 сайт, который получает результат html-кода до </head>, то есть после окончания head тег, curl не получает источник html.

Когда я вижу этот сайт html-источник через браузер view source, здесь весь html (сайт работает и хорошо).

Что может быть причиной, что локон не получает весь источник html?

+0

curl не выборочно извлекает что-либо, если вы не сообщите его (например, частичное получение http). Он вернет ТОЧНО, что было отправлено ему. Если вы получаете только частичный контент, то что-то на стороне отправки меняет свой результат. –

ответ

3

Возможно, этот сайт не позволяет другим пользователям сканировать их содержимое. Я предлагаю вам добавить User-Agent в свой заголовок запроса, чтобы имитировать веб-браузер.

curl_setopt($ch,CURLOPT_HTTPHEADER,array('User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0')); 
0

Возможно, сайт перенаправляет вас. Добавить эту опцию:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

Это приведет к перенаправлению curl.

+0

Я пытаюсь это, а не помогает, результат - это частичный контент – RIKI

Смежные вопросы