LINUX.ORG.RU

Как проверить целостность получаемой страницы?

 , ,


0

1

Как проверить целостность получаемой страницы? Нужно для парсера - проверять скачалась ли страница полностью или только кусок. Есть ли что-то штатное для этого? Пользуюсь node.js, страницы загружаю с помощью модуля request.
Страницы есть двух типов - обычные html и json. Надо проверять на целостность и то и то.

P.S. Как вообще «целостность» по-английски в данном контексте?

★★★★★

Последнее исправление: Qwentor (всего исправлений: 2)

Как проверить целостность получаемой страницы?

Никак. Можете регуляркой найти «оканчивающий элемент» в файле, но такая проверка ничего вам не гарантирует. А вообще не существует универсальных, «оканчивающих битов» для http-сообщения. Нет гарантии, что _последние получаемые_ биты ответа именно _последние_, а не обрыв в неизвестность.

P.S. Как вообще «целостность» по-английски в данном контексте?

https://en.wikipedia.org/wiki/Data_integrity

znenyegvkby
()
Последнее исправление: znenyegvkby (всего исправлений: 1)

А ошибку проверить типа не судьба?

Vit ★★★★★
()

Вообще не знаю node.js, но уточняющий вопрос, там при получении html страницы, возвращается только html, или полный ответ сервера с зоголовками и т.д.?

rumgot ★★★★★
()

Если html, то смотри в конце </html>. Json еще проще, там же есть функция декодирования. Ну и смотри события ошибочные в соединениях ессно

gobot ★★★★
()
Ответ на: комментарий от Qwentor

Тогда можешь сервером в самом начале отдавать чексумму контента, а в конце сверять. Раньше даже в http такой заголовок был: Content-MD5

deadNightTiger ★★★★★
()
Ответ на: комментарий от deadNightTiger

А, ты имеешь ы виду сервер с контентом? Нет, он не подконтролен. Я думал ты про сервер с парсером

Qwentor ★★★★★
() автор топика
Ответ на: комментарий от Qwentor

Ну если нет content-length и есть connection: close, то по разорванному соединению только смотреть, но это конечно не очень метод, но тут ничего не поделаешь, если сервер не настроен на keep-alive. Если соединение постоянное, т.е. connection: keep-alive, то в случае http 1.0 будет content-length. В случае http 1.1 опять таки в случае постоянного соединения(что по умолчанию) будет либо content-length либо transfer-encoding: chunked(а значит и указание размеров порций).

rumgot ★★★★★
()
Ответ на: комментарий от Qwentor

просто ловишь исключения когда парсишь html, со временем разберешься что к чему (поднакопишь статистику), вангую у тебя будет больше проблем с кодировками чем с целостностью html - ее не существует

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

С кодировками проблем не будет - инглиш онли

Qwentor ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.