Получить HTML из URL, используя curl в PHP - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь получить исходный HTML-код из URL с помощью curl.

Приведенный ниже код прекрасно работает в localhost, но ничего не возвращает при перемещении на сервер:

function get_html_from_url($url) {
$options = array(
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER         => false,   
        CURLOPT_FOLLOWLOCATION => false,   
        CURLOPT_ENCODING       => "",      
        CURLOPT_USERAGENT      => "User-agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3", 
        CURLOPT_AUTOREFERER    => true,     
        CURLOPT_CONNECTTIMEOUT => 30,      
        CURLOPT_HTTPHEADER     => array(
            "Host: host.com",
            "Upgrade-Insecure-Requests: 1",
            "User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Encoding: gzip, deflate",
            "Accept-Language: en-US,en;q=0.9",
            "Cookie: JSESSIONID=SESSSIONID",
            "Connection: close"
        ),
        CURLOPT_TIMEOUT        => 30,     
        CURLOPT_MAXREDIRS      => 10,     
        CURLOPT_SSL_VERIFYPEER => false,  
    );
    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;  
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

Я получаюошибка тайм-аута на сервере, и я даже попытался увеличить тайм-аут, но не повезло!

Спасибо.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Вот пример кода, который извлекает данные удаленного URL и сохраняет их в файле.Надеюсь, это поможет вам.

function scrapper()
{
    $url = "https://www.google.com/";

    $curl = curl_init();

    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $url
    ));

    $response = curl_exec($curl);

    return $response;
}

$scrap_data = scrapper();

$myfile = fopen("scrap_data.txt", "w") or die("Unable to open file!");
fwrite($myfile, $scrap_data);
fclose($myfile);

echo "Scrapped data saved inside file";
0 голосов
/ 24 сентября 2018

Если я правильно понял ваше требование, следующий скрипт должен вас туда доставить.Существует функция, которую вы можете использовать htmlspecialchars () для получения желаемого результата.

<?php
function get_content($url) {
    $options = array(
            CURLOPT_RETURNTRANSFER => 1, 
            CURLOPT_USERAGENT      => "Mozilla/5.0",         
    );
    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $htmlContent = curl_exec( $ch );
    curl_close( $ch );
    return $htmlContent;
}
$link = "/11351065/poluchit-html-iz-url-ispolzuya-curl-v-php"; 
$response = get_content($link);
echo htmlspecialchars($response);
?>

Ссылка, которую я использовал в скрипте, является просто заполнителем.Не стесняйтесь заменить его на тот, который вам нужен.

0 голосов
/ 24 сентября 2018

Вы можете запустить тест, используя file_get_contents() примерно так:

$url = file_get_contents('http://example.com');
echo $url; 

Но использование Curl - это путь.Я бы проверил, какой у вас доступ к сети с сервера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...