Задать вопрос
@Bjornie
Изучаю Python

Можно ли не загружая всю страницу через cUrl прочитать TITLE?

Написал следующую функцию для парсинга. Все работает как надо, но есть пара issue.

1) Функция исполняется в цикле, отдавая ВЕСЬ html-код, который в свою очередь анализирует title, и работает с данными. Но после нехитрых расчетов стало понятно, что нужное мне кол-во итераций будет парсится этак с месяц :D Можно ли на этапе получения кода страницы ОСТАНОВИТСЯ, если была достигнута строка с ... - это уже уменьшить размер парсируемых данных в десяток раз.

2) Это мой первый скрипт, которые авторизуется в закрытой области. Запускается он в консоли, и я заметил, что авторизация (и запись куки) происходит при каждом обращении к функции, что тоже занимает определенное время. Обязательно ли каждый раз выполнять авторизацию выполнять?

function curlRequest($url, $referer = 'http://www.google.com') {
    // Logging data
    $login_url = "...";
    $account_user = "...";
    $account_password = "...";
    $post_data = "user={$account_user}&pwd={$account_password}";
    
    // Curl initialization and options
    $ch = curl_init();
    $options = array(
        CURLOPT_URL             => $login_url,
        CURLOPT_POST            => 1,       // указываем что это POST запрос
        CURLOPT_POSTFIELDS      => $post_data,
        CURLOPT_HEADER          => 0,
        CURLOPT_USERAGENT       => "Mozilla/5.0 ....",
        CURLOPT_REFERER         => $referer,
        CURLOPT_RETURNTRANSFER  => true,
        CURLOPT_FOLLOWLOCATION  => 1,       // в случае необходимости, следовать по перенаправлениям
        CURLOPT_COOKIEJAR       => 'cookie.txt',
        CURLOPT_COOKIEFILE      => 'cookie.txt',
        CURLOPT_CONNECTTIMEOUT  => 180,
        CURLOPT_SSL_VERIFYPEER  => false,
        //CURLOPT_ENCODING        => "",
    );
    curl_setopt_array($ch, $options);
        
    // Авторизация
    $post_result = curl_exec($ch);
    
    echo ($post_result === 0) ? 'Error authentication.' : "";
    
    // Получение страницы после авторизации
    curl_setopt($ch, CURLOPT_URL, $url);
    $parsed = curl_exec($ch);
    
    // Закрыть соединение
    curl_close($ch);
    
    if ($parsed) {
        // Возврат спарсенной страницы
        return $parsed;
    }
}
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы