Руководство по работе с http в python. библиотека requests
Содержание:
- Содержимое ответа
- Использование Translate API
- Parameter Values
- Parameter Values
- Производительность
- Python NumPy
- Parameter Values
- Python Tutorial
- Python Tutorial
- Необработанное содержимое ответа
- Properties and Methods
- HTTPRedirectHandler Objects¶
- Лучшие недорогие зеркальные фотоаппараты для начинающих 2020
- Заголовки
- Потоки
- Methods
- Python NumPy
- Python MongoDB
Содержимое ответа
Мы можем читать содержимое ответа сервера. Рассмотрим тайм-лайн GitHub снова:
>>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text u'[{"repository":{"open_issues":0,"url":"https://github.com/...
будет автоматически декодировать содержимое ответа сервера. Большинство Unicode кодировок без проблем декодируются.
Когда вы делаете запрос, делает предположение о кодировке, основанное на заголовках HTTP. Кодировка текста, угаданная , используется при обращение к . Вы можете узнать, какую кодировку использует , и изменить её воспользовавшись свойством :
>>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1'
Если вы измените кодировку, Requests будет использовать новое значение всякий раз, когда вы будете использовать . Вы можете сделать это в любой ситуации, где нужна более специализированная логика работы с кодировкой содержимого ответа. Например, в HTML и XML есть возможность задавать кодировку прямо в теле документа. В подобных ситуациях вы должны использовать , чтобы найти кодировку, а затем установить . Это позволит вам использовать с правильной кодировкой.
Requests может также использовать пользовательские кодировки в случае, если вы в них нуждаетесь. Если вы создали свою собственную кодировку и зарегистрировали её в модуле , вы можете просто использовать название кодека в качестве значения , и будет работать с этой кодировкой для вас.
Использование Translate API
Теперь перейдем к чему-то более интересному. Мы используем API Яндекс.Перевод (Yandex Translate API) для выполнения запроса на перевод текста на другой язык.
Чтобы использовать API, нужно предварительно войти в систему. После входа в систему перейдите к Translate API и создайте ключ API. Когда у вас будет ключ API, добавьте его в свой файл в качестве константы. Далее приведена ссылка, с помощью которой вы можете сделать все перечисленное: https://tech.yandex.com/translate/
script.py
Ключ API нужен, чтобы Яндекс мог проводить аутентификацию каждый раз, когда мы хотим использовать его API. Ключ API представляет собой облегченную форму аутентификации, поскольку он добавляется в конце URL запроса при отправке.
Чтобы узнать, какой URL нам нужно отправить для использования API, посмотрим документацию Яндекса.
Там мы найдем всю информацию, необходимую для использования их Translate API для перевода текста.
Если вы видите URL с символами амперсанда (&), знаками вопроса (?) или знаками равенства (=), вы можете быть уверены, что это URL запроса GET. Эти символы задают сопутствующие параметры для URL.
Обычно все, что размещено в квадратных скобках ([]), будет необязательным. В данном случае для запроса необязательны формат, опции и обратная связь, но обязательны параметры key, text и lang.
Добавим код для отправки на этот URL. Замените первый созданный нами запрос на следующий:
script.py
Существует два способа добавления параметров. Мы можем прямо добавить параметры в конец URL, или библиотека Requests может сделать это за нас. Для последнего нам потребуется создать словарь параметров. Нам нужно указать три элемента: ключ, текст и язык. Создадим словарь, используя ключ API, текст и язык , т. к. нам требуется перевод с английского на испанский.
Другие коды языков можно посмотреть здесь. Нам нужен столбец 639-1.
Мы создаем словарь параметров, используя функцию , и передаем ключи и значения, которые хотим использовать в нашем словаре.
script.py
Теперь возьмем словарь параметров и передадим его функции .
script.py
Когда мы передаем параметры таким образом, Requests автоматически добавляет параметры в URL за нас.
Теперь добавим команду печати текста ответа и посмотрим, что мы получим в результате.
script.py
Мы видим три вещи. Мы видим код состояния, который совпадает с кодом состояния ответа, мы видим заданный нами язык и мы видим переведенный текст внутри списка. Итак, мы должны увидеть переведенный текст .
Повторите эту процедуру с кодом языка en-fr, и вы получите ответ .
script.py
Посмотрим заголовки полученного ответа.
script.py
Разумеется, заголовки должны быть другими, поскольку мы взаимодействуем с другим сервером, но в данном случае мы видим тип контента application/json вместо text/html. Это означает, что эти данные могут быть интерпретированы в формате JSON.
Если ответ имеет тип контента application/json, библиотека Requests может конвертировать его в словарь и список, чтобы нам было удобнее просматривать данные.
Для обработки данных в формате JSON мы используем метод на объекте response.
Если вы распечатаете его, вы увидите те же данные, но в немного другом формате.
script.py
Причина отличия заключается в том, что это уже не обычный текст, который мы получаем из файла res.text. В данном случае это печатная версия словаря.
Допустим, нам нужно получить доступ к тексту. Поскольку сейчас это словарь, мы можем использовать ключ текста.
script.py
Теперь мы видим данные только для этого одного ключа. В данном случае мы видим список из одного элемента, так что если мы захотим напрямую получить текст в списке, мы можем использовать указатель для доступа к нему.
script.py
Теперь мы видим только переведенное слово.
Разумеется, если мы изменим параметры, мы получим другие результаты. Изменим переводимый текст с на , изменим язык перевода на испанский и снова отправим запрос.
script.py
Попробуйте перевести более длинный текст на другие языки и посмотрите, какие ответы будет вам присылать API.
Parameter Values
Parameter | Description | |
---|---|---|
url | Try it | Required. The url of the request |
params | Try it | Optional. A dictionary, list of tuples or bytes to send as a query string.Default |
allow_redirects | Try it | Optional. A Boolean to enable/disable redirection.Default (allowing redirects) |
auth | Try it | Optional. A tuple to enable a certain HTTP authentication.Default |
cert | Try it | Optional. A String or Tuple specifying a cert file or key.Default |
cookies | Try it | Optional. A dictionary of cookies to send to the specified url.Default |
headers | Try it | Optional. A dictionary of HTTP headers to send to the specified url.Default |
proxies | Try it | Optional. A dictionary of the protocol to the proxy url.Default |
stream | Try it | Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True).Default |
timeout | Try it | Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response.Default which means the request will continue until the connection is closed |
verify |
Try it Try it |
Optional. A Boolean or a String indication to verify the servers TLS certificate or not.Default |
Parameter Values
Parameter | Description | |
---|---|---|
url | Try it | Required. The url of the request |
data | Try it | Optional. A dictionary, list of tuples, bytes or a file object to send to the specified url |
json | Try it | Optional. A JSON object to send to the specified url |
files | Try it | Optional. A dictionary of files to send to the specified url |
allow_redirects | Try it | Optional. A Boolean to enable/disable redirection.Default (allowing redirects) |
auth | Try it | Optional. A tuple to enable a certain HTTP authentication.Default |
cert | Try it | Optional. A String or Tuple specifying a cert file or key.Default |
cookies | Try it | Optional. A dictionary of cookies to send to the specified url.Default |
headers | Try it | Optional. A dictionary of HTTP headers to send to the specified url.Default |
proxies | Try it | Optional. A dictionary of the protocol to the proxy url.Default |
stream | Try it | Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True).Default |
timeout | Try it | Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response.Default which means the request will continue until the connection is closed |
verify |
Try it Try it |
Optional. A Boolean or a String indication to verify the servers TLS certificate or not.Default |
Производительность
Ниже приведен фрагмент HTTP-клиента, отправляющего запросы на httpbin.org, HTTP-API, который обеспечивает (среди прочего) конечную точку, имитирующую длинный запрос. Этот пример реализует все методы, перечисленные выше.
Программа для сравнения производительности использования различных запросов
import contextlib import time import aiohttp import asyncio import requests from requests_futures import sessions URL = "http://httpbin.org/delay/1" TRIES = 10 @contextlib.contextmanager def report_time(test): t0 = time.time() yield print("Time needed for `%s' called: %.2fs" % (test, time.time() - t0)) with report_time("serialized"): for i in range(TRIES): requests.get(URL) session = requests.Session() with report_time("Session"): for i in range(TRIES): session.get(URL) session = sessions.FuturesSession(max_workers=2) with report_time("FuturesSession w/ 2 workers"): futures = for f in futures: f.result() session = sessions.FuturesSession(max_workers=TRIES) with report_time("FuturesSession w/ max workers"): futures = for f in futures: f.result() async def get(url): async with aiohttp.ClientSession() as session: async with session.get(url) as response: await response.read() loop = asyncio.get_event_loop() with report_time("aiohttp"): loop.run_until_complete( asyncio.gather(*))
Запуск этой программы дает следующий вывод:
Time needed for `serialized' called: 12.12s Time needed for `Session' called: 11.22s Time needed for `FuturesSession w/ 2 workers' called: 5.65s Time needed for `FuturesSession w/ max workers' called: 1.25s Time needed for `aiohttp' called: 1.19s
Не удивительно, что более медленный результат приходит с сериализованной версией, поскольку все запросы выполняются один за другим без повторного использования соединения — 12 секунд на 10 запросов.
Использование объекта Session и, следовательно, повторное использование соединения означает экономию 8% времени, что уже является большим и легким выигрышем. Как минимум, вы всегда должны использовать Session.
Если ваша система и программа допускают использование потоков, рекомендуется использовать их для распараллеливания запросов. Однако у потоков есть некоторые накладные расходы, и они не менее весовые. Они должны быть созданы, запущены и затем присоединены.
Если вы не используете старые версии Python, то, без сомнения, использование aiohttp должно быть вашим выбором, если вы хотите написать быстрый и асинхронный HTTP-клиент. Это самое быстрое и масштабируемое решение, поскольку оно может обрабатывать сотни параллельных запросов.
Python NumPy
NumPy IntroNumPy Getting StartedNumPy Creating ArraysNumPy Array IndexingNumPy Array SlicingNumPy Data TypesNumPy Copy vs ViewNumPy Array ShapeNumPy Array ReshapeNumPy Array IteratingNumPy Array JoinNumPy Array SplitNumPy Array SearchNumPy Array SortNumPy Array FilterNumPy Random
Random Intro
Data Distribution
Random Permutation
Seaborn Module
Normal Distribution
Binomial Distribution
Poisson Distribution
Uniform Distribution
Logistic Distribution
Multinomial Distribution
Exponential Distribution
Chi Square Distribution
Rayleigh Distribution
Pareto Distribution
Zipf Distribution
NumPy ufunc
ufunc Intro
ufunc Create Function
ufunc Simple Arithmetic
ufunc Rounding Decimals
ufunc Logs
ufunc Summations
ufunc Products
ufunc Differences
ufunc Finding LCM
ufunc Finding GCD
ufunc Trigonometric
ufunc Hyperbolic
ufunc Set Operations
Parameter Values
Parameter | Description | |
---|---|---|
url | Try it | Required. The url of the request |
allow_redirects | Try itTry it | Optional. A Boolean to enable/disable redirection.Default (not allowing redirects) |
auth | Try it | Optional. A tuple to enable a certain HTTP authentication.Default |
cert | Try it | Optional. A String or Tuple specifying a cert file or key.Default |
cookies | Try it | Optional. A dictionary of cookies to send to the specified url.Default |
headers | Try it | Optional. A dictionary of HTTP headers to send to the specified url.Default |
proxies | Try it | Optional. A dictionary of the protocol to the proxy url.Default |
stream | Try it | Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True).Default |
timeout | Try it | Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response.Default which means the request will continue until the connection is closed |
verify | Try it | Optional. A Boolean or a String indication to verify the servers TLS certificate or not.Default |
Python Tutorial
Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises
Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises
Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises
Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises
Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises
Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise
Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting
Python Tutorial
Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises
Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises
Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises
Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises
Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises
Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise
Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting
Необработанное содержимое ответа
В редких случаях, когда вы хотите получить доступ к сырому ответу сервера на уровне сокета, вы можете обратиться к . Если вы хотите сделать это, убедитесь, что вы установили в вашем первом запросе. После этого вы уже можете проделать следующее:
>>> r = requests.get('https://api.github.com/events', stream=True) >>> r.raw <requests.packages.urllib3.response.HTTPResponse object at 0x101194810> >>> r.raw.read(10) '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'
Теперь вы можете использовать подобный код как шаблон, чтобы сохранить получаемый поток в файл:
>>> with open(filename, 'wb') as fd: >>> for chunk in r.iter_content(chunk_size): >>> fd.write(chunk)
Использование будет обрабатывать многое из того, с чем бы вам пришлось иметь дело при использовании напрямую. Описанное выше является предпочтительным и рекомендуемым способом извлечения содержимого при потоковой загрузке.
Properties and Methods
Property/Method | Description | |
---|---|---|
apparent_encoding | Try it | Returns the apparent encoding |
close() | Try it | Closes the connection to the server |
content | Try it | Returns the content of the response, in bytes |
cookies | Try it | Returns a CookieJar object with the cookies sent back from the server |
elapsed | Try it | Returns a timedelta object with the time elapsed from sending the request to the arrival of the response |
encoding | Try it | Returns the encoding used to decode r.text |
headers | Try it | Returns a dictionary of response headers |
history | Try it | Returns a list of response objects holding the history of request (url) |
is_permanent_redirect | Try it | Returns True if the response is the permanent redirected url, otherwise False |
is_redirect | Try it | Returns True if the response was redirected, otherwise False |
iter_content() | Try it | Iterates over the response |
iter_lines() | Try it | Iterates over the lines of the response |
json() | Try it | Returns a JSON object of the result (if the result was written in JSON format, if not it raises an error) |
links | Try it | Returns the header links |
next | Try it | Returns a PreparedRequest object for the next request in a redirection |
ok | Try it | Returns True if status_code is less than 400, otherwise False |
raise_for_status() | Try it | If an error occur, this method returns a HTTPError object |
reason | Try it | Returns a text corresponding to the status code |
request | Try it | Returns the request object that requested this response |
status_code | Try it | Returns a number that indicates the status (200 is OK, 404 is Not Found) |
text | Try it | Returns the content of the response, in unicode |
url | Try it | Returns the URL of the response |
HTTPRedirectHandler Objects¶
Note
Some HTTP redirections require action from this module’s client code. If this
is the case, is raised. See RFC 2616 for
details of the precise meanings of the various redirection codes.
An exception raised as a security consideration if the
HTTPRedirectHandler is presented with a redirected URL which is not an HTTP,
HTTPS or FTP URL.
- (req, fp, code, msg, hdrs, newurl)
-
Return a or in response to a redirect. This is called
by the default implementations of the methods when a
redirection is received from the server. If a redirection should take place,
return a new to allow to perform the
redirect to newurl. Otherwise, raise if
no other handler should try to handle this URL, or return if you
can’t but another handler might.Note
The default implementation of this method does not strictly follow RFC 2616,
which says that 301 and 302 responses to requests must not be
automatically redirected without confirmation by the user. In reality, browsers
do allow automatic redirection of these responses, changing the POST to a
, and the default implementation reproduces this behavior.
- (req, fp, code, msg, hdrs)
-
Redirect to the or URL. This method is called by the
parent when getting an HTTP ‘moved permanently’ response.
- (req, fp, code, msg, hdrs)
-
The same as , but called for the ‘found’ response.
- (req, fp, code, msg, hdrs)
-
The same as , but called for the ‘see other’ response.
Лучшие недорогие зеркальные фотоаппараты для начинающих 2020
5. Canon EOS 2000D Kit
Canon EOS 2000D Kit один из лучших вариантов в рейтинге фотоаппаратов для начинающих, который великолепно подойдет для отработки навыков или начала обучения на курсе. Купив такую камеру, можно быть уверенным в качестве снимков и простоте управления. Canon поставляется с простым объективом в комплекте, поэтому работу с ним можно начинать сразу после покупки.
Функция автоматической съемки обеспечивает простое создание хороших кадра даже при минимальных знаниях о фотографировании. Включите интеллектуальную настройку и аппарат подберет необходимые параметры, анализируя объекты в кадре и свет. Камера небольшая, рука не устанет держать на весу продолжительное время и стоит до 30 000 руб. Место хвата прорезинено, а дизайн продуман так, чтобы большой палец дотягивался до всех кнопок и рычажков.
Некоторые покупатели отмечают, что у фотоаппарата EOS 2000D Kit отсутствует сенсорный экран, но не нужно забывать, что это бюджетная модель. Емкости аккумулятора хватает на 500 снимков без подзарядки. Благодаря оптическому видоискателю батарея расходуется медленнее, ведь подстроить кадр можно даже при выключенном аппарате.
4. Nikon D3400 Kit
Ищете недорогой зеркальный фотоаппарат для начинающих с хорошим зумом? Тогда рассмотрите к покупке японский бренд Nikon. Камера D3400 Kit оснащена широким динамическим диапазоном, гибридным автофокусом и ручной фокусировкой. Фотографии получаются приятных цветов, высокое разрешение матрицы (24.7 МП) дает большой простор для обработки кадров на компьютере. Точки фокусировки значительно облегчают процесс съемки кадра начинающим фотографам.
Современный трехдюймовый дисплей отлично помогает при видеосъемке. ЖК дисплей дает четкое изображение, даже беглым взглядом можно оценить качество кадра. По мнению некоторых пользователей, экрану недостает функции автоповорота. Это осложняет съемку с нестандартных ракурсов. На фотоаппарате D3400 Kit получится снимать видео, в камере имеется встроенный микрофон. Для более качественной записи звука профессионалы советуют приобрести дополнительный внешний микрофон.
3. Canon EOS 4000D Kit
В недорогом зеркальном фотоаппарате Canon EOS 4000D Kit присутствуют функции, необходимые для начинающих фотографов. В комплекте идет универсальный объектив с удобным фокусным расстоянием. Для съемки в темное время суток и экспериментов с тенями в EOS 4000D встроена вспышка. Аккумулятор на 860 Ма/ч позволит сделать более 500 кадров с автоматической фокусировкой и вспышкой. Поддержка сменного объектива реализуется соединением типа байонет Canon EF/EF-S.
Зеркальный видоискатель экономично расходует заряд аккумулятора и хорошо работает при очень ярком освещении. В Canon EOS 4000D реализовано несколько способов фокусировки для резкости кадра (ручной, по лицу, автоматический). 9 точек фокусировки значительно облегчает процесс съемки. Фотоаппарат поддерживает внешние карты памяти SDHC, Secure Digital, SDXC. Можно приобрести несколько карт и не переживать о сохранности кадров во время фотосессии. Зеркальный фотоаппарат попал на третье место в рейтинге лучших камер для новичков стоимостью до 20 000 руб.
2. Nikon D5600 Kit
Nikon D5600 Kit хороший зеркальный аппарат для фотографов начального уровня. Поворотный экран будет удобен при съемке с нестандартного ракурса. Объектив в комплекте на 18-55 мм подойдет для наработки навыков и понимания различного фокусного расстояния. Благодаря поддержке сменного объектива, можно использовать другую оптику и линзы для творческих фотосъемок. С D5600 можно записать видеоролик, а для более качественного звука можно приобрести внешний микрофон под имеющийся разъем 3,5 мм.
Чувствительность до 25600 ISO позволит снимать четкие снимки при низкой освещенности. Автоматический режим выставит настройки для оптимальной экспозиции самостоятельно. Максимальное разрешение фотографий 6000 x 4000, аппарат снимает в JPEG и RAW форматах. Технология Nikon SnapBridge позволит передать снимки или ролики с камеры на смартфон.
1. Nikon D3500 Kit
В недорогом зеркальном фотоаппарате Nikon D3500 Kit есть функция обучения, которая порадует начинающих фотографов. Подготовленная серия слайдов поможет разобраться в режимах, настройках камеры и поэкспериментировать самостоятельно. D3500 это один из самых доступных фотоаппаратов с возможностью сменного объектива. Корпус довольно легок, чтобы держать его длительное время без усталости в руках во время фотосессии на свадьбу, юбилей, день рождения или корпоратив. Кнопки размещены так, чтобы можно было управлять настройками большим пальцем.
Камера Nikon хорошо передает цвета, фокусировка быстро срабатывает, а встроенный стабилизатор помогает убрать смазанность кадра. D3500 можно подключить к смартфону через Bluetooth и передать сделанные снимки. Диапазон выдержки 30 — 1/4000 секунд позволит делать красивые ночные фотографии. Новички оценят встроенные фильтры и множество автоматических режимов. Зеркальный фотоаппарат Nikon D3500 находится на первом месте в списке хороших камер для начинающих.
Заголовки
Также в ответе вы можете получить заголовки. Вы можете посмотреть их, используя словарь headers для объекта response.
script.py
Заголовки отправляются вместе с запросом и возвращаются с ответом. Заголовки используются для того, чтобы клиент и сервер понимали, как интерпретировать данные, отправляемые и получаемые в запросе и ответе.
Мы увидим в ответе несколько заголовков. Обычно информация из заголовков не требуется, однако если она вам нужна, вы можете ее получить.
Обычно требуется заголовок content type, поскольку он показывает формат данных, например HTML, JSON, PDF, обычный текст и т. д. Однако заголовок content type обрабатывается библиотекой Requests, и вы имеете доступ ко всем возвращаемым данным.
Потоки
Еще одна эффективная оптимизация скорости — это потоковая передача запросов. При отправке запроса по умолчанию все тело ответа загружается немедленно. Лучший способ не загружать весь контент в память сразу при запросе. Для этого есть параметра stream, в библиотеке requests или атрибут content в aiohttp.
Потоковая передача с requests
import requests # Use `with` to make sure the response stream is closed and the connection can # be returned back to the pool. with requests.get('http://example.org', stream=True) as r: print(list(r.iter_content()))
Потоковая передача с aiohttp
import aiohttp import asyncio async def get(url): async with aiohttp.ClientSession() as session: async with session.get(url) as response: return await response.content.read() loop = asyncio.get_event_loop() tasks = [asyncio.ensure_future(get("http://example.com"))] loop.run_until_complete(asyncio.wait(tasks)) print("Results: %s" % )
Не загружать полный контент крайне важно, чтобы избежать ненужного выделения сотен мегабайт памяти. Если вашей программе не требуется доступ ко всему содержимому в целом, но она может работать с частями
Например, если вы собираетесь сохранить и записать содержимое в файл, чтение только куска и одновременная запись будет гораздо более эффективным, чем чтение всего тела HTTP, выделяя огромную кучу памяти , и только после этого записать его на диск.
Methods
Python NumPy
NumPy IntroNumPy Getting StartedNumPy Creating ArraysNumPy Array IndexingNumPy Array SlicingNumPy Data TypesNumPy Copy vs ViewNumPy Array ShapeNumPy Array ReshapeNumPy Array IteratingNumPy Array JoinNumPy Array SplitNumPy Array SearchNumPy Array SortNumPy Array FilterNumPy Random
Random Intro
Data Distribution
Random Permutation
Seaborn Module
Normal Distribution
Binomial Distribution
Poisson Distribution
Uniform Distribution
Logistic Distribution
Multinomial Distribution
Exponential Distribution
Chi Square Distribution
Rayleigh Distribution
Pareto Distribution
Zipf Distribution
NumPy ufunc
ufunc Intro
ufunc Create Function
ufunc Simple Arithmetic
ufunc Rounding Decimals
ufunc Logs
ufunc Summations
ufunc Products
ufunc Differences
ufunc Finding LCM
ufunc Finding GCD
ufunc Trigonometric
ufunc Hyperbolic
ufunc Set Operations