Я загружаю исходную страницу HTML сайта с помощью cURL
команды. Проблема в том, что я не хочу большую часть содержимого на странице. Мне просто нужны первые 100 строк исходной страницы. Есть ли способ остановить загрузку страницы после первых нескольких строк?
В настоящее время у меня работает приведенная ниже команда, но она не эффективна по времени.
curl -r[0-1] "http://www.freebase.com/m/045c7b" > foo.txt
Я попытался изменить значение с 1
на .5
и, .05
и все же вся веб-страница загружается.
Я смотрю на время менее секунды, чтобы выполнить вышеуказанную команду.
РЕДАКТИРОВАТЬ
Со страницы руководства cURL
я вижу, что « вы также должны знать, что на многих серверах HTTP / 1.1 эта функция не включена, поэтому при попытке получить диапазон вы получите весь документ ». сервер не поддерживает запрос диапазона, есть ли какая-либо другая команда в nix
среде, которая поможет мне выполнить то, что я пытаюсь сделать?
Я еще не тестировал это конкретное приложение, но что-то подсказывает мне, что вы можете соединить здесь dd и nc:
Netcat (
nc
) может потребоваться дальнейшая настройка, чтобы получить правильные заголовки запросов, но если это общедоступный сайт, вы сможете найти полезный вывод, если будете достаточно стараться. Конечно, dd примет только столько ввода, сколько вы укажете и выйдете, что приведет к SIGPIPE netcat, так что он сразу же последует этому примеру. Единственный реальный трюк - это сгладить первоначальное рукопожатие - как только вы запустите поток, вы можете сбросить его, когда захотите.РЕДАКТИРОВАТЬ
Чтение комментариев slm побудило меня поддержать это движение; если вы можете сериализовать JSON POST в правильном формате, это, безусловно, путь для более своевременного ответа. Разбор HTML для птиц, в любом случае.
Одним из полезных приемов для этого является захват потока вашей сети во время связи с сервером в вашем браузере, а затем, когда ваш браузер отправляет сообщение POST, которое дает вам то, что вы хотите, отправьте его снова в виде GET и посмотрите на результаты.
источник
Команда
head
обычно останавливает загрузку до ее завершения (хотя для коротких файлов она может заполнить буфер канала до закрытия канала). Это потому, что когда канал закрыт,curl
ему некуда писать (дескриптор файла закрыт, запись не удалась).Однако, по моему опыту, самое длинное при загрузке - это ожидание DNS-запросов (болезненно, когда вы загружаете сотни файлов последовательно). Это может помочь с локальным DNS-кешем, например,
dnsmasq
или, если вы используете одно и то же доменное имя много раз с разной структурой каталогов, просто разрешите его один раз в IP и выполните замену URL.Чтобы доказать мою точку зрения ... попробуй
time netstat
противtime netstat -n
(без кеша разница драматична, с кешем плохо только в первый раз, потом вспоминает).источник