Речі responses html. Опис об'єкту Response

21.12.2021

Припустимо, нам потрібно отримати дані з сайту, збирання яких вручну недоцільне або неможливе через обсяг. У такому разі ми можемо автоматизувати процес, використовуючи інструменти, описані далі.

Бібліотека requests

Python-бібліотека для виконання запитів до сервера та обробки відповідей. Фундамент скрипту для парсингу та наша основна зброя. Користуючись цією бібліотекою, ми отримуємо вміст сторінки у вигляді html для подальшого парсингу.

import requests response = requests. get ("https://ya.ru") # get-запит print (response. text) # виведення вмісту сторінки payload = ("key1": "value1", "key2": "value2") response = requests. get ("http://httpbin.org/get" , params = payload ) # запит з параметрами headers = ( "user-agent" : "my-app/0.0.1" ) response = requests . get (url, headers = headers) # запит з певними html заголовками

API

Application programming interface - програмний інтерфейс програми, що надається власником веб-програми для інших розробників. Відсутність API, здатного задовольнити наші потреби - перше в чому варто переконатися, перш ніж кидатися аналізувати вихідний код сторінки і писати для неї парсер. Безліч популярних сайтів має власну api та документацію, яка пояснює як ним користуватися. Ми можемо використовувати api таким чином - формуємо http-запит згідно з документацією, і отримуємо відповідь за допомогою requests.

BS4

Beautifulsoup4 - це бібліотека для парсингу html та xml документів. Дозволяє отримати доступ безпосередньо до вмісту будь-яких тегів у HTML.

from bs4 import BeautifulSoup soup = BeautifulSoup (raw_html , "html.parser" ) print (soup . find ("p" , class_ = "some-class" ) . text ) # виведення вмісту тега "p" класом "some-class"

Selenium Web Driver

Дані на сайті можуть генеруватися динамічно за допомогою JavaScript. У такому разі спарсити ці дані силами requests+bs4 не вдасться. Справа в тому, що bs4 парсить вихідний код сторінки, не виконуючи js. Для виконання js коду та отримання сторінки, ідентичної тій, яку ми бачимо у браузері, можна використовувати selenium web driver - це набір драйверів для різних браузерів, що забезпечується бібліотеками для роботи з цими драйверами.

А що робити, якщо там авторизація?

session = requests.Session() data = ("login_username":"login", "login_password":"password") url = "http://site.com/login.php" response = session.post(url, data =data)

А якщо сайт банить за багато запитів?
  • Встановити затримку між запитами:

response = requests.get(url, timeout=(10, 0.01)) # таймують на з'єднання, таймують на читання (у секундах)

  • Прикинутись браузером, використовуючи selenium web driver або передавши вміст заголовка user-agent, формуючи запит:

user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) " "Gecko/20100101 Firefox/50.0") request = requests.get(url, headers=("User-Agent":user_agent))

  • Використовувати проксі:

Переклад: Влад Мержевич

Кожен знає про веб-форми, чи не так? Вставляємо тег, кілька, можливо, завершуємо це все кнопкою і готове.

Ви не знаєте й половини про це. HTML5 визначає більше десяти нових типів полів, які ви можете використовувати у своїх формах. І коли я говорю «використовувати», я маю на увазі, що їх можна використовувати прямо зараз - без будь-яких прокладок, хаків або обхідних шляхів. Не хвилюйтеся сильно, я не хочу сказати, що всі нові захоплюючі можливості насправді підтримуються в будь-якому браузері. Цілком ні, я не маю на увазі, що всіма. У сучасних браузерах, так, ваші форми покажуть все, на що вони здатні. Але в старих браузерах ваші форми, як і раніше, працюватимуть, хоча і не в повній мірі. Тобто ці можливості елегантно деградують у кожному браузері. Навіть у IE6.

Підказуючий текст Підтримка тексту, що підказує
IE Firefox Safari Chrome Opera iPhone Android
- 4.0+ 4.0+ 4.0+ 11.0+ 4.0+ -

Перше поліпшення HTML5 щодо форм це можливість встановлення тексту, що підказує, у полі введення. Такий текст відображається в полі введення, якщо поле порожнє і не має фокусу. Як тільки ви клацніть в полі введення (або перейдете до нього через Tab) підказуючий текст зникає.

Ви, напевно, бачили текст, що підказує раніше. Наприклад, Mozilla Firefox включає текст, що підказує, в адресному рядку з написом «Пошук в закладках і журналі».

Коли ви клацаєте по адресному рядку, текст, що підказує, зникає.

Ось як ви можете включити текст, що підказує, у свої форми.




Браузери, які не підтримують атрибут placeholder, його просто ігнорують. Без шкоди та порушень.

Запитай професора Маркапа

☞ В. Чи можу я використовувати HTML розмітку для атрибута placeholder? Я хочу вставити картинку або, може, змінити кольори.

В. Атрибут placeholder може містити тільки текст, не HTML-код. Однак є спеціальні розширення CSS, які дозволяють встановити стиль тексту в деяких браузерах.

Поля з автофокусом Підтримка автофокусу
IE Firefox Safari Chrome Opera iPhone Android
- - 4.0+ 3.0+ 10.0+ - -

Сайти можуть використовувати JavaScript для автоматичного отримання фокусу у першому полі форми. Наприклад, на головній сторінці Google.comавтофокус має поле для введення пошукових ключових слів. Хоча це і зручно для більшості людей, але може дратувати досвідчених користувачів та людей з особливими потребами. Якщо ви натиснете пробіл в очікуванні прокручування сторінки, прокручування не буде, тому що фокус знаходиться в полі введення форми (набиратиметься пробіл в поле замість прокручування). Якщо ви перевели фокус на інше поле введення, поки сторінка завантажується, скрипт автофокусу на сайті може «послужливо» перемістити фокус назад на вихідне поле введення, перериваючи ваш набір і змушуючи вводити текст у неправильному місці.

Оскільки автофокус працює через JavaScript, можуть бути складнощі для обробки цих крайніх варіантів і мало можливостей для тих людей, які не хочуть, щоб веб-сторінка викрадала їх фокус.

Для вирішення цих проблем HTML5 вводить атрибут autofocus для всіх елементів форм. Атрибут autofocus робить саме те, як і звучить: щойно сторінка завантажується, переміщує фокус у вказане поле. Але оскільки це лише розмітка, а не сценарій, поведінка буде постійною для всіх сайтів. Крім того, виробники браузерів (або автори розширень) можуть запропонувати користувачам спосіб вимкнути автофокус.

Ось як ви можете встановити поле форми з автофокусом.




Браузери, які не підтримують атрибут autofocus, його ігноруватимуть.

Що таке? Кажете, що бажаєте, щоб автофокус працював скрізь, а не тільки у химерних HTML5-браузерах? Ви можете залишити поточний скрипт з автофокусом, просто зробіть дві невеликі зміни:

  • додайте атрибут autofocus у код HTML;
  • перевірте, чи підтримує браузер атрибут autofocus , і якщо ні, запустіть свій скрипт.

Автофокус із альтернативою




if (!("autofocus" in document.createElement("input")) ) (
document.getElementById("q").focus();
}


Встановлюйте фокус якомога раніше

Багато веб-сторінок чекають, поки спрацює window.onload і встановлюють фокус. Але подія window.onload не спрацює, доки всі зображення не завантажаться. Якщо на вашій сторінці багато зображень, такі наївні скрипти потенційно змінять фокус після того, як користувач почав взаємодіяти з іншою частиною вашої сторінки. Ось чому досвідчені користувачі ненавидять скрипти автофокусування.

Наприклад, у попередньому розділі скрипт автофокусу розміщений відразу після поля форми, на яку він посилається. Це оптимальне рішення, але воно може образити ваші почуття, ставити блок коду JavaScript в середині сторінки (або більш приземлено, ваша система може бути не настільки гнучкою). Якщо ви не можете вставити скрипт у середині сторінки, ви повинні встановити фокус через подію користувача, як $(document).ready() в jQuery замість window.onload .

Автофокус через jQuery




$(document).ready(function() (

$("#q").focus();
}
});






Подія користувача jQuery спрацьовує, як тільки DOM доступний - тобто чекає, поки завантажиться текст сторінки, але не чекає, поки всі зображення завантажаться. Це не оптимальний підхід - якщо сторінка незвичайно велика або мережне з'єднання повільне, користувач може, як і раніше, взаємодіяти зі сторінкою перед тим, як виконається скрипт з фокусом. Але все ж таки це набагато краще, ніж чекати, поки відбудеться подія window.onload .

Якщо ви згодні і готові вставити скрипт з одним оператором у код вашої сторінки, це компроміс, який менш неприємний, ніж перший варіант і краще, ніж другий. Ви можете використовувати події користувача jQuery для завдання власних подій, скажімо autofocus_ready. Тоді ви можете викликати цю подію вручну відразу після доступності поля з автофокусом. Дякую Е. М. Штенбергу за навчання мене цій техніці.

Автофокус з альтернативною користувальницькою подією




$(document).bind("autofocus_ready", function() (
if (!("autofocus" in document.createElement("input"))) (
$("#q").focus();
}
});





$(document).trigger("autofocus_ready");

Це рішення оптимальне, як перший підхід. Фокус буде встановлений у полі форми, як тільки це стане технічно можливо, в той час як текст сторінки все ще вантажиться. Частину логіки програми (фокус у полі форми) перенесено з тіла сторінки до розділу . Цей приклад заснований на jQuery, але концепція для користувачів подій не є унікальною для jQuery. Інші JavaScript-бібліотеки на кшталт YUI та Dojo пропонує аналогічні можливості.

Підведемо підсумки.

  • Це правильне встановлення фокуса.
  • Якщо це можливо, нехай браузер використовує атрибут autofocus у полі, де ви бажаєте фокус.
  • Якщо ви використовуєте альтернативний код для старих браузерів, визначте підтримку атрибута autofocus, щоб скрипт виконувався лише у старих браузерах.
  • Встановлюйте фокус якомога раніше. Вставте скрипт з фокусом у код відразу після поля форми. Якщо це не зачіпає вас, вставте JavaScript-бібліотеку, яка підтримує події користувача, і викликайте подію в коді відразу ж після поля форми. Якщо це неможливо, використовуйте подію на зразок $(document).ready() з jQuery.
  • За жодних обставин не чекайте, поки window.onload встановить фокус.
Адреси електронної пошти

Вже понад десять років форми містять лише кілька видів полів. Найбільш поширені такі.

Всі ці типи полів, як і раніше, працюють у HTML5. Якщо ви «оновитеся до HTML5» (можливо зміною !DOCTYPE ), вам не доведеться робити жодних змін у ваших формах. Ура зворотної сумісності!

Однак HTML5 визначає 13 нових типів полів і немає жодних причин не почати їх використовувати.

Першим з цих нових типів є адреса електронної пошти. Виглядає приблизно так.





Я збирався написати пропозицію, яка почалася «в браузерах, які не підтримують type="email"...», але зупинився. Чому? Тому що я не впевнений, що браузери не підтримують type="email" . Всі браузери підтримують type="email" . Вони можуть не робити щось спеціальне, але браузери, які не розпізнають type="email", ставляться до нього як type="text" і відобразяться як звичайне текстове поле.

Я підкреслю, наскільки це важливо. В Інтернеті мільйони форм, які просять ввести адресу електронної пошти і всі використовують . Ви бачите текстове поле, вводите свою адресу електронної пошти до нього та все тут. І ось з'являється HTML5, який визначає type = "email". Браузери божеволіють? Ні. Кожен браузер Землі сприймає невідомий атрибут type як type="text" - навіть IE6. Так що ви можете "оновити" ваші форми, використовуючи type="email" прямо зараз.

Що трапиться, якщо скажемо, браузер підтримує type="email"? Ну, це може означати будь-що. Специфікація HTML5 не вимагає будь-якого конкретного інтерфейсу для нових типів полів. Опера доповнює поле форми невеликою іконкою. Інші HTML5-браузери як Safari і Chrome відображають як текстове поле - таке саме, як type="text" - так що ваші користувачі не помітять різницю (поки не подивляться вихідний код).

І ще є iPhone.

iPhone немає фізичної клавіатури. Весь «набір» здійснюється натисканням по екранній клавіатурі, яка спливає у відповідний час, наприклад, коли ви перейшли в поле форми на веб-сторінці. Apple зробив щось хитре у браузері iPhone-а. Він розпізнає деякі нові поля HTML5 та динамічно змінює екранну клавіатуру для оптимізації введення.

Наприклад, адреса електронної пошти це текст, вірно? Звичайно, але це особливий вид тексту. Так, практично всі адреси електронної пошти містять символ @ і принаймні одну точку (.), але вони навряд чи містять пробіл. Тому, коли ви використовуєте iPhone і переходите до елемента , ви отримаєте екранну клавіатуру, яка містить пробіл менше, ніж звичайно, а також виділені клавіші для символів. та @.

Підіб'ю підсумок. Немає жодних недоліків для негайного переведення всіх ваших полів з електронними адресами в type="email" . Практично ніхто цього не помітить, крім користувачів iPhone, які, мабуть, також цього не помітять. Але ті, хто помітять, тихо посміхнуться і подякують вам за те, що їхня робота стала трохи легшою.

Веб-адреси

Веб-адреса – які зубрили стандартів називали URL, за винятком кількох педантів, які називали URI – це ще один тип спеціалізованого тексту. Синтаксис веб-адреси обмежується відповідним Інтернет-стандартом. Якщо хтось просить вас ввести веб-адресу у форму, вона чекає на щось на кшталт «http://www.google.com/», а не «125 Фарвуд Роуд». Косі лінії є спільними - навіть у головної сторінки Google їх три. Крапки також поширені, але прогалини заборонені. І кожна веб-адреса має суфікс домену як ".com" або ".org".

І ось... (барабанний дріб, будь ласка)... . На iPhone це виглядає так.

iPhone змінив свою віртуальну клавіатуру, як це зробив для адреси електронної пошти, але тепер оптимізував її для набору веб-адреси. Пробіл повністю замінений трьома віртуальними клавішами: коса лінія, точка і ".com" (ви можете утримувати клавішу ".com", щоб вибрати інший суфікс на кшталт ".org" або ".net").

Браузери, які не підтримують HTML5, будуть ставитись до type="url" як до type="text" , так що немає недоліків щодо використання цього типу для всіх полів, де потрібно вводити веб-адресу.

Числа як лічильники

Наступний крок: числа. Запит числа складніший, ніж запит адреси електронної пошти або веб-адреси. Насамперед, числа складніші, ніж ви думаєте. Виберіть число швидко. -1? Ні, я мав на увазі число між 1 і 10,7? Ні, ні, не дріб, тупиця. π? Тепер ви просто обрали ірраціональне число.

Хочу зауважити, у вас не часто запитують просто число. Імовірніше, що будуть просити число у певному діапазоні. Ви можете лише захотіти, щоб у межах цього діапазону були певні типи чисел - можливо, цілі числа, але не дроби чи десяткові числа чи щось екзотичніше, наприклад, кратні 10. HTML5 все це охоплює.

Вибрати число, майже будь-яке

Розглянемо по одному атрибуту.

  • type="number" означає, що це числове поле.
  • min="0" вказує мінімально допустиме значення цього поля.
  • max="10" є максимально допустимим значенням.
  • step="2" у поєднанні з мінімальним значенням визначає припустимі числа в діапазоні: 0, 2, 4 і так далі, аж до максимального значення.
  • value="6" значення за промовчанням. Повинний виглядати знайомим, цей атрибут завжди використовується для визначення значень полів форми. Я згадую тут про це для відправної точки, що HTML5 ґрунтується на попередніх версіях HTML. Вам не потрібно переучуватись, щоб робити те, що ви вже робили.

Це код числового поля. Майте на увазі, що всі ці атрибути є необов'язковими. Якщо у вас заданий мінімум, але не максимум, можете вказати атрибут min, але не max. За промовчанням значення кроку дорівнює 1 і ви можете опустити атрибут step , доки не знадобиться інше значення кроку. Якщо немає значення за промовчанням, то атрибут value може бути порожнім рядком або навіть взагалі опущений.

Але HTML5 не зупиняється на досягнутому. За ту саму низьку, низьку ціну свободи ви отримуєте ці зручні методи JavaScript.

  • input.stepUp(n) підвищує значення поля на n.
  • input.stepDown(n) знижує значення поля на n.
  • input.valueAsNumber повертає поточне значення як число з точкою, що плаває (властивість input.value це завжди рядок).

Проблеми із відображенням? Ну, правильний інтерфейс керування числами в браузерах реалізований по-різному. На iPhone, де набір має складнощі, браузер знову оптимізує віртуальну клавіатуру для введення чисел.

У настільній версії Опери поле type="number" відображається як лічильник з невеликими стрілками вгору та вниз, які можна натиснути для зміни значень.

Опера поважає атрибути min, max і step, тому ви завжди досягнете прийнятного числового значення. Якщо ви збільшите значення до максимуму, стрілка вгору в лічильнику стає сірою.

Як і з іншими полями введення, що я обговорював у цьому розділі, браузери, які не підтримують type="number" , будуть ставитися до нього як до type="text" . Значення за замовчуванням буде відображатися в полі (оскільки воно зберігається в атрибуті value ), але інші атрибути, такі як min і max будуть ігноруватися. Ви можете вільно реалізувати їх самостійно або використовувати JavaScript-фреймворк, який вже реалізує керування лічильником. Спочатку перевірте, як тут.

if (! .inputtypes.number) (
// немає вбудованої підтримки для поля type=number
// може спробувати Dojo або інший JavaScript-фреймворк
}

Числа у вигляді повзунка

Лічильник не єдиний спосіб подання введення чисел. Ви, мабуть, також бачили повзунок, який має такий вигляд.

Тепер ви також можете мати повзунок у формі. Код виглядає дивно схожим на поле лічильника.


Всі доступні атрибути такі ж, як і у type = "number" - min, max, step, value - і означають те саме. Єдина відмінність полягає в інтерфейсі користувача. Замість поля введення, браузери, як очікується, відображають type="range" у вигляді повзунка. На момент написання останні версії Safari, Chrome та Opera працювали з цим. На жаль, iPhone відображає у вигляді простого текстового поля, він навіть не оптимізує свою екранну клавіатуру для введення чисел. Решта браузери просто розглядати поле як type="text" , тому немає жодних причин почати використовувати цей тип негайно.

HTML 4 не вмикає вибір дати через календар. JavaScript-фреймворки дозволяють це обійти (Dojo, jQuery UI, YUI, Closure Library), але, звичайно, кожне з цих рішень вимагає «впровадження» фреймворку для будь-якого вбудованого календаря.

HTML5 визначає спосіб включити вбудований вибір дати без будь-яких скриптів. Насправді їх шість: дата, місяць, тиждень, час, дата + час і дата + час з часовим поясом.

Поки що підтримка... мізерна.

Підтримка вибору дати Тип Opera Інші браузери
type="date" 9.0+ -
type="month" 9.0+ -
type="week" 9.0+ -
type="time" 9.0+ -
type="datetime" 9.0+ -
type="datetime-local" 9.0+ -

Ось як Opera відображає:

Якщо вам потрібен час разом з датою, Opera також підтримує:

Якщо вам потрібен місяць плюс рік (наприклад, термін дії кредитної картки), Opera може відобразити:

Менш поширеним, але доступним є вибір тижня на рік через:

Останнє, але не менш важливе, це вибір часу з:

Вибір дати з альтернативою




...

var i = document.createElement("input");
i.setAttribute("type", "date");
if (i.type == "text") (
// Немає вбудованої підтримки вибору дати: (
// Використовуйте Dojo/jQueryUI/YUI/Closure для її створення,
// потім динамічно замініть елемент
}

Ймовірно, інші браузери зрештою підтримуватимуть ці типи. Подібно до type="email" та інших типів, ці поля форми будуть відображатися у вигляді звичайного тексту в тих браузерах, які не розпізнають type="date" та його варіанти. Якщо ви хочете, то можете просто використовувати , чим зробите користувачів Opera щасливими, і зачекайте, поки інші браузери надолужать пропущене. Більш реально це використовувати, але перевірити, чи має браузер вбудовану підтримку вибору дати, і включити альтернативне рішення у вигляді скрипту на ваш вибір (Dojo, jQuery UI, YUI, Closure Library або інші варіанти).

Вікно пошуку

Отже, пошук. Не лише пошук від Google або Yahoo (ну, ті теж). Подумайте про будь-яке вікно пошуку, на будь-якій сторінці, на будь-якому сайті. Амазон має вікно пошуку, Яндекс має вікно пошуку, більшість блогів також. Як вони зроблені? , як і будь-яке інше текстове поле у ​​мережі. Давайте це виправимо.

Пошук нового покоління




У деяких браузерах ви не помітите жодної відмінності від звичайного текстового поля. Але якщо ви використовуєте Safari на Mac OS X, це буде виглядати так.

Знайшли різницю? Поле введення має закруглені кути! Я знаю, знаю, ви навряд чи можете стримати свої почуття. Але зачекайте, що це ще не все! Коли ви почнете вводити в поле type="search", Safari вставить невелику кнопку «x» з правого боку вікна. Натискання «x» очищає вміст поля. Google Chrome, який має під капотом ту саму технологію, поводиться так само. Обидві ці маленькі хитрощі виглядають і поводяться аналогічно до рідного пошуку в iTunes та інших клієнтських додатках Mac OS X.

Apple.com використовує для пошуку на своєму сайті, щоб допомогти сайту передати «маколюбне» відчуття. Але тут немає нічого специфічного Маків. Це просто код, так що кожен браузер на будь-якій платформі може вибрати, як відображати відповідно до угод платформи. Як і з іншими новими типами, браузери, які не визнають type="search" будуть ставитися до нього як type="text" , так що немає абсолютно ніяких причин не почати використовувати type="search" для всіх ваших вікон пошуку прямо сьогодні .

Професор Маркап каже

За замовчуванням Safari не застосовується до більшості стилів. Якщо ви бажаєте змусити Safari розуміти поле для пошуку як звичайне текстове поле (щоб застосувати власні стилі), додайте це правило до таблиці стилів.

input (
-webkit-appearance: textfield;
}

Дякую Джону Лейну за навчання мене цьому трюку.

Вибір кольору

HTML5 також визначає поле , яке дозволяє вибрати колір і повертає його у шістнадцятковому поданні. Жоден браузер не підтримує вибір кольору, що є ганьбою, тому що я завжди любив палітри Mac OS. Може бути коли-небудь.

Прим. перекладача. Opera 11 підтримує цю можливість.

Валідація форм

У цьому розділі я говорив про нові елементи форм і нові можливості, такі як автофокус, але я не згадав, мабуть, найбільш захоплюючу частину форм HTML5: автоматичну перевірку вхідних даних. Розглянемо загальні проблеми введення адреси електронної пошти у вигляді. Ймовірно, у вас є перевірка на стороні клієнта через JavaScript, після чого відбувається перевірка на стороні сервера через PHP, Python або іншу серверну мову. HTML5 ніколи не зможе замінити перевірку на стороні сервера, але він може колись замінити перевірку на стороні клієнта.

Є дві великі проблеми, пов'язані з перевіркою адреси електронної пошти на JavaScript:

  • Деяка кількість відвідувачів (ймовірно, близько 10%) не включають JavaScript.
  • Ви отримаєте адресу неправильно.
  • Серйозно, ви отримаєте адресу неправильно. Визначення того, що набір випадкових символів це коректна адреса електронної пошти неймовірно складна. Чим сильніше ви дивитеся, тим складніше стає. Я вже казав, що це дуже, дуже складно? Чи не простіше повісити цей головний біль на ваш браузер?

    Opera перевіряє type="email"

    Ось скріншот з Opera 11, хоча функціональність присутня з Opera 9. Код включає установку значення email для атрибута type . Коли користувач Опери намагається надіслати форму з , браузер автоматично перевіряє адресу пошти, навіть якщо скрипти вимкнуто.

    HTML5 також пропонує перевірку веб-адрес з полем і чисел з . Перевірка чисел враховує значення атрибутів min і max , тому браузери не дозволять вам надіслати форму, якщо ви вводите занадто велике число.

    Не існує коду, що включає перевірку форм HTML5, це робиться за замовчуванням. Щоб вимкнути перевірку, скористайтеся атрибутом novalidate .

    Не перевіряй мене




    Браузери повільно включають підтримку перевірки форм HTML5. Firefox 4 матиме повну підтримку. На жаль, Safari та Chrome реалізують лише частково: вони перевіряють елементи форм, але не виводять жодних видимих ​​повідомлень, коли поля форми не проходять перевірку. Іншими словами, якщо ви введете неправильну (або неправильно складену) дату в type = "date", Safari і Chrome не надішле форму, але і не буде говорити вам, чому це не зробили. Вони встановлюватимуть фокус на полі, яке містить неприпустиме значення, але не відображатиме повідомлення про помилку, як Opera або Firefox 4.

    Обов'язкові поля Підтримка
    IE Firefox Safari Chrome Opera iPhone Android
    - 4.0+ - - 9.0+ - -

    Валідація форм HTML5 не обмежується типом кожного поля. Ви також можете вказати, що деякі поля є обов'язковими для заповнення, такі поля повинні мати значення, перш ніж ви зможете відправити форму.

    Код для обов'язкових полів є простим, наскільки це можливо.




    Браузери можуть змінити зовнішній вигляд обов'язкового поля. Ось наприклад, як це виглядає у Mozilla Firefox 4.0.

    Крім того, якщо ви намагаєтеся надіслати форму без заповнення обов'язкового значення, Firefox виведе інформаційну панель, яка каже, що поле є обов'язковим і не може бути порожнім.

    Описуваний об'єкт є дуже корисним та потужним інструментом. Цей об'єкт має кілька методів, їх опис наводиться нижче:

    Колекції: Методи: Властивості: Колекція Response.Cookies

    Колекція cookies встановлює значення для cookies. Якщо ці cookies не існують, то створює їх. Якщо cookie існує, то набуває нового значення, а старе знищується.

    Response.Cookies(cookie) [(ключ) | . атрибути ] = значення

    Параметри:

    • cookie - Ім'я cookie
    • Ключ – необов'язковий параметр. Якщо він зазначений, то cookie – це довідник (вкладений) і ключ – це безліч значень.
    • Атрибути - Вказана інформація про самі cookie. Цей параметр може бути одним з наступних:
    • Значення - Вказує значення, яке потрібно присвоїти даному ключу або атрибуту.
    НазваОпис
    DomainЛише запис. Якщо зазначено, то cookie надсилаються лише за запитом з цього домену.
    ExpiresЛише запис. Дата, коли у cookie закінчується термін дії. Ця дата має бути встановлена ​​для того, щоб cookie записалися на жорсткий диск клієнта після закінчення сесії. Якщо цей атрибут не встановлено, то дата закінчення терміну дії cookie приймається поточною датою. Cookie припинять термін дії відразу після закінчення сесії.
    HasKeyЛише читання. Вказує на те, чи містить cookie цей ключ.
    PathЛише запис. Якщо вказано, то cookie передаються лише на запит з цього шляху. Якщо параметр не встановлено, використовується шлях до програми.
    SecureЛише запис. Вказує на те, чи будуть захищені cookie чи ні.

    Примітка:

    Якщо cookie з ключем створено так, як показано в наступному скрипті,

    то наступний заголовок буде надісланий:

    Set-Cookie:MYCOOKIE=TYPE1=цукор&TYPE2=печиво

    Якщо ж привласнити mycookie значення без використання ключів, то ця дія зруйнує type1 і type2 - ключі. Наприклад:

    У попередньому прикладі ключі type1 та type2 будуть зруйновані та їх значення втрачені. Mycookie тепер міститиме в собі значення шоколадний зефір.

    Ви також можете перевірити існування конкретного ключа в такий спосіб:

    Якщо буде виведено TRUE, значить такий ключ існує, у разі FALSE – ні.

    Метод Response.Write

    Response.Write змінна_або_значення

    Параметри:

    • перемінна_або_значення - Дані для виведення на екран браузера через HTML. Цей параметр може бути будь-якого типу, який підтримується VisualBasic Scripting Edition. Тобто дані можуть бути типами: дата, рядок, символ, числові значення. Значення параметра не може містити комбінації %>. Замість неї можна використовувати рівнозначну комбінацію. Web-сервер буде перетворювати цю послідовність на необхідну, коли скрипт буде виконано.

    Наступний приклад показує, як працює метод Response.write для виведення повідомлення клієнту.

    Я просто скажу вам: А ваше ім'я

    Наступний приклад додає HTML-таг на веб-сторінку. Оскільки цей метод неспроможна містити комбінацію %>, ми використовуємо послідовність %>. Отже приклад скрипту:

    Результатом виводу буде рядок:

    Метод Response.Redirect

    Response.Redirect URL (URL - універсальний описувач ресурсів)

    Параметри:

    • URL - параметр є універсальним описувачем ресурсу. Він показує, як потрібно переадресувати браузер.

    Примітка:

    Будь-яке входження даного методу між тагами та веб-сторінки буде проігноровано. Цей метод можна використовувати лише у заголовку HTML-сторінки. Даний метод передасть заголовок (header) браузеру, якщо пропущено параметр URL цього об'єкта в наступному вигляді:

    HTTP/1.0 302 Object Moved Location URL

    Метод Response.End

    Response.End

    Примітка:

    Якщо властивість Response.Buffer була встановлена ​​в TRUE (істина), то викликаючи метод Response.End буде проводити очищення буфера, виштовхуючи дані з нього клієнту. Якщо ви не бажаєте виводити дані користувачеві, ви повинні викликати наступний метод:

    Метод Response.AddHeader

    Метод AddHeader додає HTML-заголовок із певними значеннями. Цей метод завжди додає новий заголовок для відповіді клієнтському браузеру. Цей метод не замінює існуючий заголовок новим. Доданий заголовок не можна видалити.

    Цей метод застосовується лише для "просунутих" завдань.

    Response.AddHeader ім'я_змінної, значення

    Параметри:

    • имя_переменной - Назва нового параметри HTML-заголовка.
    • значення - значення, яке буде запам'ятовується в заголовку.
    Зауваження:

    Для коректної роботи методу ім'я_змінної не повинно містити символу підкреслення (_). Набір ServerVariables інтерпретує символ підкреслення як тире в заголовку. Наприклад наступний скрипт змушує сервер визначити параметр з HTML-заголовка, що називається MY-HEADER.

    Так як HTTP протокол вимагає, щоб всі параметри заголовка були передані до початку тіла HTML-сторінки, ви повинні викликати метод AddHeader у вашому скрипті до того, як почнеться опис .... Є один виняток. Якщо значення властивості Buffer встановлено в істину (true), тоді можна писати AddHeader у будь-якій точці скрипта, але до першого виклику методу Flush. В іншому випадку, вихід методу AddHeader викликає помилку.

    Наступні два.ASP-файли демонструють останнє зауваження.

    ваш текст на сторінці

    У цьому прикладі сторінка не буферується. Скрипт працює однак AddHeader викликається перед тим, як сервер робитиме висновок у HTML клієнту.

    тут йде деяка інформація вашої сторінки...

    У другому прикладі сторінка буферується і як ресультат сервер не видає текст клієнту доти, доки скінчиться сам скрипт чи доки не зустрінеться метод Flush. Ви можете використовувати цей метод для того, щоб надіслати кілька копій деякого параметра заголовка з різними значеннями, як із заголовком WWW-Authenticate.

    Метод Response.AppendToLog

    Метод AppendToLog додає рядок до кінця файлу звіту (log-file) web-сервера. Ви можете викликати цей метод стільки разів, скільки вам потрібно. Щоразу при викликі методу файл звіту сервера буде записаний вказаний вами рядок.

    Response.AppendToLog значення

    Параметри:

    • значення - Текст, який буде додано до фалу звіту веб-сервера. Цей рядок не може містити символ коми (,). Причому загальна довжина рядка, що додається, не повинна перевищувати 80 символів.
    Зауваження:

    Для використання даної можливості вам необхідно, щоб опція URI Query була дозволена на панелі "розширених властивостей ведення log-файлу" для цього веб-сервера IIS.

    Метод Response.BinaryWrite

    Метод BinaryWrite дозволяє записувати вказану інформацію у поточний HTTP-висновок без будь-якого перетворення символів. Цей метод зручний для виведення нестрокової інформації, такої як двійкові дані, які потрібні будь-яким додатком.

    Response.BinaryWrite дані

    Параметри:

    • Дані - Дані, призначені для HTTP-виводу.

    Якщо у вас є об'єкт, що породжує байтовий масив, ви можете використовувати наступний виклик даного методу для передачі цього масиву будь-якій програмі, запущеній на клієнтській машині.

    Метод Response.Clear

    Метод Clear стирає весь забуферований HTML-висновок. Однак цей метод не стирає інформаїцю з буфера, пов'язану із заголовком. Ви можете використовувати цей метод для керування помилками. Однак виконання даного методу буде призводити до помилки, якщо властивість Response.Buffer не істина (true).

    Властивість Response.CacheControl

    Ця властивість визначає встановлене за замовчуванням значення. Коли ви встановлюєте властивість значення Public, то Proxy-сервер може кешувати висновок, що генерується ASP-ом.

    Response.CacheControl [= cache control header]

    Параметри:

    • Cache control header - Цей параметр управління заголовком може бути Public або Private.
    Властивість Response.CharSet

    Властивість CharSet дозволяє додавати назву кодової таблиці символів (наприклад, WINDOWS-1251) HTML заголовок, рядок content-type (тип вмісту).

    Response.CharSet Ім'я_кодової_таблиці

    Параметри:

    • Ім'я_кодової_таблиці - Рядок, який вказує кодову таблицю для даної HTML-сторінки. Найменування даної кодової таблиці буде додано до заголовка HTML-файлу під параметром "content-type".

    Для ASP-сторінки, для якої не використано властивість Response.Charset параметр "content-type" у заголовку буде наступним:

    Content-type:text/html

    Якщо ж ASP-файл містить компанію

    то в заголовку поле content-type буде мати вигляд

    Content-type:text/html; charset=Windows-1251

    Примітка:

    Ця функція вставляє будь-який рядок у заголовок і не перевіряє його правильність.

    Якщо сторінка містить кілька того Response.Charset, то кожен наступний буде замінювати значення на своє власне.

    Властивість Response.ContentType

    Властивість ContentType дозволяє вказувати вид (тип) вмісту HTML-файлу. Якщо ця властивість не використана, за замовчуванням приймається text/html.

    Response.ContentType [=тип_вмісту]

    Параметри:

    • тип_вмісту - Рядок, що описує тип вмісту HTML. Цей рядок зазвичай має вигляд "тип/підтип", де тип це основна категорія вмісту та підтип - вказує тип вмісту. Для отримання повного списку типів, що підтримуються - зверніться до документації до браузера або специфікації HHTP.

    Наступний приклад ілюструє встановлення типу вмісту як Формат Визначення Каналів (Push-канали).

    Другий приклад демонструє встановлення властивості найбільш загальновідомі значення.

    Властивість Response.Expires

    Властивість Expires вказує проміжок часу доки сторінка HTML закешована браузером вважається такою, що не втратила силу (термін зберігання). Якщо користувач запитує сторінку, що закешує, у браузера, у якої не вийшов термін "зберігання", то браузер повертає її прямо зі свого кеша.

    Response.Expires [=число]

    Параметри:

    • Число - Кількість часу в хвилинах перед тим, як сторінка буде вважатися "простроченою". Установка цього значення 0 змушує цю сторінку стає " простроченою " негайно.

    Примітка:

    Якщо ця властивість встановлена ​​більш ніж один раз на сторінці, використовується найменше значення.

    Властивість Response.ExpiresAbsolute

    Властивість ExpiresAbsolute вказує час і дату, після якого сторінка HTML закешована браузером вважається такою, що втратила силу (вийшов термін зберігання). Якщо користувач запитує сторінку, що закешує, у браузера, у якої не вийшов термін "зберігання", то браузер повертає її прямо зі свого кеша. Якщо час вказано (а дата вказано), то термін зберігання цієї сторінки закінчується опівночі цього дня. Якщо ні час ні дата не вказано, то значення надається відповідно до дня і часу, коли було запущено скрипт.

    Response.ExpiresAbsolute [= [дата] [час]]

    Параметри:

    • дата - Вказує на дату закінчення терміну зберігання. Формат дати повинен відповідати стандарту RFC-1123.
    • час - Вказує на час, коли сторінка закінчується "термін зберігання". Це значення переводиться у формат GMT (час за Грінвічем) перед тим, як заголовок буде переданий клієнту.

    Примітка:

    Якщо ця властивість визначається більше одного разу на сторінці, то момент закінчення терміну зберігання приймається найшвидшим з усіх зазначених значень.

    Властивість Response.IsClientConnected

    Ця властивість є значення тільки для читання, тобто цій властивості не можна надавати ніяких значень. Ця властивість вказує на те, чи підключено клієнта або вже не підключено до сервера, визначене в останньому з Response.Write.

    Response.IsClientConnected ()

    Примітка:

    Ця властивість дозволяє вам визначати моменти, коли користувач підключено і коли відключено від сервера. Наприклад, довжина періоду часу тим часом, коли сервер відповів і коли клієнт зробив запит дає впевненість у тому, що клієнт ще підключений і є сенс продовжити виконання скрипту.