Я ищу переписать скрипт Python, который у меня есть, который просматривает список ссылок и затем извлекает несколько дней из страниц, которые он получает.
Одна проблема, которая возникает, если ссылка представляет собой изображение, почтовый индекс или даже ISO, я не хочу загружать весь этот файл. Я могу попробовать проверить расширение, но это не всегда работает.
В моем скрипте Python я делаю две вещи.
Как только я подключаюсь к сайту, я проверяю заголовок типа контента. Кажется, что Python может сделать это без загрузки всего файла.
Ограничьте объем URL, который я загружаю в своем запросе, до 150 КБ. Так как я только за HTML-страницами, это более чем покрывает это.
Я хочу использовать Guzzle для этого проекта, но, просматривая документы, я не уверен, что это можно сделать.
Моя главная проблема заключается в том, чтобы я не загружал ISO-файлы или видео и не использовал всю оперативную память или пропускную способность.
Из жрет 6 документацию. stream
: установите значение true для потоковой передачи ответа, а не для загрузки всего этого заранее.
Вы можете использовать эту функцию, чтобы загрузить только первые 150 КБ.
$client = new Client();
$response = $client->get($url, [
'stream' => true,
]);
$body = $response->getBody();
$bytesRead = 0;
$dataRead = "";
while (!$body->eof()) {
$data = $body->read(1024);
$dataRead .= $data;
$bytesRead += strlen($data);
if($bytesRead >= 150*1024) {
$body->close();
throw new \Exception("exceeded download limit");
}
}
Других решений пока нет …