HTTP-библиотека requests в Python
Модуль requests — это элегантная и простая HTTP-библиотека для Python, созданная для людей. Модуль позволяет чрезвычайно легко отправлять HTTP/1.1 запросы. Нет необходимости вручную составлять URL-адреса или кодировать данные для PUT и POST запросов (в настоящее время можно использовать метод Request.json )
Установка модуля requests в виртуальное окружение:
# создаем виртуальное окружение, если нет $ python3 -m venv .venv --prompt VirtualEnv # активируем виртуальное окружение $ source .venv/bin/activate # ставим модуль requests (VirtualEnv):~$ python -m pip install -U requests
Содержание:
- Создание HTTP запроса к WEB-странице;
- Код ответа сервера ( status code ) ;
- Получение контента в виде текста;
- Получение контента в виде байтов;
- Отслеживание перенаправлений, атрибут Response.history .
Создание HTTP запроса к WEB-странице.
Сделать HTTP-запрос очень просто. Сначала необходимо импортировать модуль requests . Далее попробуем запросить контент веб-страницы. Для примера запросим методом GET общедоступную HTTP страницу с временной шкалой сайта GitHub:
>>> import requests >>> resp = requests.get('https://api.github.com/events')
В результате запроса получили объект ответа под названием resp . Далее, из этого объекта можно получить всю необходимую информацию о этой странице.
Простой API запросов означает, что все формы HTTP-запросов столь же очевидны. Например, вот как вы делаете запрос HTTP POST:
>>> import requests >>> resp = requests.post('https://httpbin.org/post', data = 'key':'value'>)
Создание других типов HTTP-запросов, таких как PUT, DELETE, HEAD и OPTIONS все это так же просто и очевидно.
>>> import requests >>> resp_put = requests.put('https://httpbin.org/put', data = 'key':'value'>) >>> resp_del = requests.delete('https://httpbin.org/delete') >>> resp_head = requests.head('https://httpbin.org/get') >>> resp_opt = requests.options('https://httpbin.org/get')
При работе с библиотекой requests необходимо уяснить следующее:
Всякий раз, когда вызываются методы requests.get() или requests.post() и т. д., то делаются две важные вещи.
- Создается объект Request , который будет отправлен на сервер для запроса ресурса указанного в URL .
- Создается объект Response , который генерируется после того, как запрос получает ответ от сервера.
Объект Response содержит всю информацию, возвращаемую сервером, а также объект запроса, который вы создали изначально
Код ответа сервера ( status code ).
Можно проверить код состояния ответа сервера следующим способом:
>>> import requests >>> resp = requests.get('https://httpbin.org/get') # статус ответа сервера >>> resp.status_code # 200
Модуль requests также поставляется со встроенным объектом поиска кода состояния requests.codes для удобства использования:
>>> resp.status_code == requests.codes.ok # True
Если сделан плохой запрос (ошибка клиента 4XX или ответ на ошибку сервера 5XX), то можно поднять его с помощью объекта ответа Response.raise_for_status() :
>>> import requests >>> bad_r = requests.get('https://httpbin.org/status/404') # статус ответа сервера >>> bad_r.status_code # 404 # Поднимаем исключение >>> bad_r.raise_for_status() # Traceback (most recent call last): # File "requests/models.py", line 832, in raise_for_status # raise http_error # requests.exceptions.HTTPError: 404 Client Error
Но если вызвать Response.raise_for_status() для ответа сервера со статусом 200, то в результате получим None :
>>> resp.status_code == requests.codes.ok # True >>> resp.raise_for_status() # None
Получение контента WEB-страницы в виде текста.
Извлекать/читать контента/текста ответа сервера также легко как делать запросы. Еще раз рассмотрим временную шкалу GitHub:
>>> import requests >>> resp = requests.get('https://api.github.com/events') >>> resp.text '[
Запросы будут автоматически декодировать содержимое с сервера. Большинство кодировок юникода легко декодируются.
Когда посылается запрос, модуль requests делает обоснованные предположения о кодировке ответа на основе HTTP-заголовков. При доступе к атрибуту resp.text используется кодировка, прочитанная модулем requests во время запроса к серверу. Если сервер не предоставляет кодировку страницы в заголовках ответа или кодировка не распознана, то по умолчанию requests использует кодировку ‘utf-8’. Можно узнать, какую кодировку использует конкретный запрос, и изменить ее, используя атрибут resp.encoding :
# просмотр текущей кодировки страницы >>> resp.encoding # 'utf-8' # изменение кодировки страницы >>> resp.encoding = 'windows-1251'
Если изменить кодировку, то запросы будут использовать новое значение resp.encoding всякий раз, когда вызывается resp.text . Бывают случаи, когда заголовок ответа сервера выдает неправильную кодировку (отличную от той которая указана в HTML разметке) и в этой ситуации, необходимо применить специальную логику, чтобы определить, какой будет кодировка контента. Например, языки разметки HTML и XML имеют возможность указывать свою кодировку в своем теле. В подобных ситуациях необходимо использовать resp.content , чтобы найти указанную кодировку, а затем установить resp.encoding . Это позволит извлекать данные HTML-страницы resp.text с правильной кодировкой.
Получение контента в виде байтов.
Можно получить доступ к телу ответа в байтах для нетекстовых запросов, например для загрузки изображений:
# получение контента в виде байтовой строки >>> resp.content # b'[
Кодировки gzip и передача-кодировки deflate автоматически декодируются.
Например, чтобы воссоздать изображение из двоичных данных, возвращаемых запросом, можно использовать следующий код:
>>> from PIL import Image >>> from io import BytesIO >>> img = Image.open(BytesIO(resp.content))
Отслеживание перенаправлений, атрибут Response.history .
По умолчанию модуль requests будет обрабатывать перенаправление для всех типов запросов, кроме HEAD (по умолчанию отключено). Для отслеживания всех перенаправления можно использовать атрибут .history объекта Response .
Список Response.history содержит объекты Response , созданные для выполнения запроса. Список отсортирован от самого старого до самого последнего ответа.
Например, GitHub перенаправляет все HTTP-запросы на HTTPS:
>>> import requests >>> r = requests.get('http://github.com/') >>> r.url # 'https://github.com/' >>> r.status_code # 200 >>> r.history # []
Если используется запросы GET, OPTIONS, POST, PUT, PATCH или DELETE, то можно отключить обработку перенаправления с помощью аргумента allow_redirects :
>>> import requests >>> r = requests.get('http://github.com/', allow_redirects=False) >>> r.status_code # 301 >>> r.history # []
Если используется HEAD запрос, то также можно включить отслеживание перенаправления:
>>> import requests >>> r = requests.head('http://github.com/', allow_redirects=True) >>> r.url # 'https://github.com/' >>> r.history # []
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- GET и POST запросы c модулем requests
- Получение/отправка заголовков сервера модулем requests
- Извлечение и установка cookies с модулем requests
- Сессии/сеансы Session() модуля requests
- Объект ответа сервера Response модуля requests
- Получение и отправка данных в виде JSON с модулем requests
- Установка timeout для модуля requests
- Объект PreparedRequest модуля requests
- Загрузка файлов на сервер модулем requests
- Загрузка больших данных модулем requests
- HTTP-прокси или SOCKS-прокси с модулем requests
- Использование хуков модуля requests
- Аутентификация с модулем requests
- SSL и модуль requests
Библиотека Requests: HTTP for Humans
Язык Python является универсальным языком программирования. С его помощью можно решать разнообразные задачи в сфере разработки.
Одной из таких сфер, в которой Python занял уверенную позицию, является веб-разработка. Немаловажную роль в этом сыграло обширное комьюнити, различные фреймворки и подключаемые библиотеки, созданные для облегчения жизни программистов. Об одной из таких библиотек сегодня пойдёт речь.
Библиотека Requests: HTTP for Humans
При решении различных задач в сфере веб-разработки, нам часто приходится взаимодействовать с HTTP. Это не самая простая задача для любого языка программирования и Python в этом не исключение. Язык, конечно, содержит встроенные модули, позволяющие отправлять HTTP запросы , но, как это ни парадоксально, их использование едва ли можно отнести к Pythonic-way.
В своё время чтобы обойти монструозность и сложность использования встроенных модулей появилась библиотека Requests . На данный момент она является одной из самых популярных библиотек на github: более 40 000 «звёзд» и используется более, чем в 20 000 open-source проектах. Нередко она используется и в коммерческой разработке.
Для чего и где мы можем применять Requests?
Как было отмечено выше, библиотека позволяет нам легко и с минимальным количеством кода взаимодействовать с веб-приложениями. Это необходимо нам для решения любых задач, связанных с передачей информации от пользователя к серверу и обратно. Но, чтобы что-то хорошо понять, необходимо закрепить теоретические знания практикой, поэтому перейдём от слов к делу.
Примеры использования библиотеки Requests
Для работы с примерами мы будем использовать два способа: работа в командной строке и написание скриптов в .py-файлах для их дальнейшего запуска.
Я показываю использование командной строки, так как это полезный навык, который пригодится в дальнейшем, когда надо будет быстро что-то проверить.
Для начала, поскольку библиотека является внешней, нам необходимо её установить. Делается это очень просто в командной строке:
$ pip install requests
Продолжим использовать консоль. После установки в нашем расположении (у меня это диск D) введем команду:
D:\> python Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Теперь можем проверить установку библиотеки произведя импорт:
>>> import requests
Получаем ответ от сайта
Первое, что мы сделаем — проверим статус-код ресурса. Иными словами: узнаем, работает ли сайт. Для этого мы создадим простой запрос GET. Подробнее с кодами состояния HTTP можно ознакомиться на сайте Веб-документация MDN .
>>> r = requests.get('http://learn.python.ru')
Проверим, что возвращает нам данный запрос:
Как мы можем видеть, в качестве ответа мы получили объект класса Response и код 200. Этот код говорит, что ресурс работает и можно с ним взаимодействовать.
А что будет, если мы отправим неправильный запрос?
>>> r = requests.get('http://learn.python.ru/user') >>> r
Как вы можете заметить, этот запрос вернул нам всё тот же объект класса Response, но с другим кодом — 404. Это означает, что страницы ‘/user’ на сайте http://learn.python.ru нет.
Теперь, когда мы познакомились с тем, как отправлять запрос GET с помощью Requests, мы можем продвинуться дальше и сделать что-то более интересное.
Скачаем изображение с сайта
В этом примере мы будем применять всё тот же запрос GET, но, в отличие от предыдущего, мы будем работать с содержимым ответа.
>>> import requests >>> image = requests.get('https://learn.python.ru/media/projects/sl1_Cj4bKxp.png') >>> with open('new_image.png', 'wb') as f: . f.write(image.content)
После выполнения данного скрипта, мы увидим новое изображение под названием new_image.png в директории, из которой у нас запущен скрипт.
Подробнее с классом Response и методами получения его содержимого можно ознакомиться на официальном сайте библиотеки Requests .
Отправим сообщение в WhatsApp
В этом примере, в отличие от примеров выше, мы познакомимся с другим методом — POST. Стоит отметить, что запросы POST и GET являются самыми часто применяемыми при работе с HTTP.
Для реализации этого примера воспользуемся сервисом, предоставляющим API для отправки сообщений. Я буду использовать сервис Chat-Api . Это платный сервис, но у них есть демо-режим, предоставляющий бесплатный доступ на 3 дня, чего нам для реализации этой задачи будет достаточно. После регистрации на сайте и получении Api URL и токена, мы сможем выполнить отправку сообщений в WhatsApp. Вот что нам для этого потребуется:
>>> import requests >>> url = '/message?token=' >>> data = ", "body": ""> >>> message = requests.post(url, json=data)
И проверим, отправлено ли сообщение:
>>> print(message.text)
Вы должны будете увидеть что-то вроде этого:
@c.us","id":"true_@c.us_3EB07324DCD36BD13CC4","queueNumber":1>
Загрузим файл на сервер
Для следующего примера воспользуемся сайтом для тестирования HTTP запросов Webhook.site . В качестве URL мы будем использовать ссылку, которая генерируется на сайте автоматически. У вас она будет отличаться от использованной в примере.
>>> import requests >>> url = 'https://webhook.site/c253969f-1ad8-4888-812e-e57f4eb4924e' >>> with open('test.txt', 'w') as f: . f.write('текст для проверки загрузки файла') >>> with open('test.txt', 'rb') as f: . r = requests.post(url, ) . print(r)
После выполнения скрипта в терминале мы увидим уже знакомый нам объект класса Response и статус код — 200. Это означает, что запрос выполнился. Вернемся снова на сайт Webhook.site, выберем в правой колонке наш запрос и сможем посмотреть содержание выполненного запроса:
Авторизуемся на сайте
В этом примере будем использовать сайт, который нам также потребуется в следующем примере. Для начала зарегистрируемся на сайте WorldWeatherOnline . После удачной регистрации на сайте в личном кабинете вы увидите API KEY, который потребуется для следующего примера.
Для авторизации на сайте нам необходимо в запросе отправить пользовательские данные на сайт. Помимо логина и пароля, мы должны отправить сайту ключи, которые содержатся в заголовках пакета. Чтобы узнать эти ключи нужно выйти из нашей учётной записи, перейти на страницу входа, затем открыть в браузере Developer tools (F12), перейти на вкладку Network и снова авторизоваться. После того как страница загрузится в Developer tools во вкладке Network пролистайте вверх и найдите строчку login.aspx.
Как мы можем заметить во вкладке Headers, при входе мы осуществили запрос POST для передачи данных серверу. Пролистав вниз до блока Form Data, мы найдём все ключи, которые нам необходимо отправить сайту для авторизации.

>>> import requests >>> url = 'https://www.worldweatheronline.com/developer/login.aspx' >>> data = > >>> s = requests.Session() >>> s = requests.post(url, data=data)
Для проверки выполнения авторизации выведем содержание ответа сервера:
>>> print(s.text)
После выполнения данной функции в консоли мы увидим содержимое страницы в виде текста, то есть так, как страницу “видит” наш браузер — в формате html. Подтверждением успешной авторизации служат следующие строки:
Неавторизованному пользователю данные кнопки недоступны.
Узнаем погоду в Москве
В этом примере мы будем использовать API KEY с сайта WorldWeatherOnline, на котором мы зарегистрировались в прошлом примере. В разделе документации на сайте WorldWeatherOnline приведено подробное описание параметров.
Теперь уже с использованием вашей любимой IDE напишем скрипт, который будет принимать в качестве аргумента из командной строки город, а возвращать значение температуры.
Создадим файл и назовём его weather.py. Запишем в него:
import sys import requests def get_weather(): url = 'http://api.worldweatheronline.com/premium/v1/weather.ashx' city = sys.argv[1] params = < 'key': '', 'q': city, 'format': 'json', 'num_of_days': 1, 'lang': 'ru'> r = requests.get(url, params=params) the_weather = r.json() # данной строкой мы преобразуем полученное содержимое страницы # в формат json, который очень похож на тип данных dict() в Python # и с которым очень удобно работать if 'data' in the_weather: if 'current_condition' in the_weather['data']: try: return the_weather['data']['current_condition'][0] except(IndexError, TypeError): return 'Server Error' return 'Server Error' if __name__ == '__main__': weather = get_weather() print(f'Погода сейчас , ощущается как ')
Запустим наш скрипт в командной строке:
$ python weather.py Moscow
В качестве ответа мы должны увидеть:
Погода сейчас 20, ощущается как 20
В этом примере мы не просто получили какую-то информацию от сервера, но и обработали содержимое полученного ответа. В следующем примере мы разберем еще один метод обработки полученного содержимого ответа.
Напишем простой парсер новостей
В качестве источника новостей будем использовать хаб о Python сайта Habr.com . В этом примере, помимо Requests нам также понадобится библиотека BeautifulSoup. С данной библиотеке можно подробно познакомиться на официальной странице документации Beautiful Soup . Устанавливается она также просто, как и Requests:
$ pip install beautifulsoup4
Создадим файл с названием news.py и запишем в него следующее:
import requests from bs4 import BeautifulSoup class HabrPythonNews: def __init__(self): self.url = 'https://habr.com/ru/hub/python/' self.html = self.get_html() def get_html(self): try: result = requests.get(self.url) result.raise_for_status() return result.text except(requests.RequestException, ValueError): print('Server error') return False
Метод get_html() класса HabrPythonNews с помощью библиотеки Requests отправляет наш запрос GET к сайту Habr.com и возвращает содержимое страницы в виде текста. Иными словами, мы получаем html страницы. Если мы посмотрим на содержимое страницы (ctrl + U в Google Chrome), то обнаружим там различные блоки, в которых содержится информация. Нас интересуют только заголовки новостей и ссылки на них. Чтобы извлечь нужную нам информацию из содержимого страницы, мы воспользуемся библиотекой Beautiful Soup. Нужный нам блок называется:
Давайте теперь добавим функцию для работы с этим блоком:
def get_python_news(self): soup = BeautifulSoup(self.html, 'html.parser') news_list = soup.findAll('h2', class_='post__title') return news_list
Метод get_python_news() возвращает нам все элементы страницы, с тегом
И добавим завершающий блок нашего класса:
if __name__ == "__main__": news = HabrPythonNews() print(news.get_python_news())
Итоговый код должен выглядеть у нас так:
import requests from bs4 import BeautifulSoup class HabrPythonNews: def __init__(self): self.url = 'https://habr.com/ru/hub/python/' self.html = self.get_html() def get_html(self): try: result = requests.get(self.url) result.raise_for_status() return result.text except(requests.RequestException, ValueError): print('Server error') return False def get_python_news(self): soup = BeautifulSoup(self.html, 'html.parser') news_list = soup.findAll('h2', class_='post__title') return news_list if __name__ == "__main__": news = HabrPythonNews() print(news.get_python_news())
При выполнении данного скрипта мы получим ссылки и заголовки новостей с первой страницы хаба. Изменяя параметры поиска
news_list = soup.findAll('h2', class_='post__title')
мы можем получать различные значения.
В качестве заключения
Использование библиотеки Requests не ограничивается приведенными выше примерами. Данная библиотека является очень удобным инструментом для взаимодействия с HTTP. Продолжить знакомство с библиотекой можно на официальном сайте Requests .
Автор: Виталий Калинин
Новости
16 ноября 2019
Учимся использовать API сервиса Yandex SpeechKit
8 ноября 2019
Learn Python в Пензе
Как установить модуль request?
Пробовал установить командой
pip install requests
Выдаётся куча ошибок.
начиная с
ERROR: Exception:
Traceback (most recent call last):
File «c:\python38\lib\site-packages\pip\_internal\cli\base_command.py», line 1
73, in _main
status = self.run(options, args)
File «c:\python38\lib\site-packages\pip\_internal\cli\req_command.py», line 20
3, in wrapper
return func(self, options, args)
и заканчивая
File «c:\python38\lib\ssl.py», line 500, in wrap_socket
return self.sslsocket_class._create(
File «c:\python38\lib\ssl.py», line 997, in _create
raise ValueError(«check_hostname requires server_hostname»)
ValueError: check_hostname requires server_hostname
Потом скачал отсюда https://2.python-requests.org/en/latest/index.html
requests-2.26.0-py2.py3-none-any.whl
и попробовал
pip install requests-2.26.0-py2.py3-none-any.whl
Выдаёт кучу других ошибок красным цветом.
- Вопрос задан более двух лет назад
- 671 просмотр
11 комментариев
Простой 11 комментариев
Что говорит
pip —version
Александр Б @alex_bul Автор вопроса
Александр Ананьев, Говорит такое:
pip 21.2.3 from c:\python38\lib\site-packages\pip (python 3.8)
Александр Б, прокси для доступа в интернет используется?
Александр Б @alex_bul Автор вопроса
Через ВПН захожу.
Александр Б @alex_bul Автор вопроса
Хотя прокси конечно стоит на фирме
Александр Б, видимо причина в этом. Попрбуйте отключить VPN и повторно установить через pip install requests
Александр Б @alex_bul Автор вопроса
Отключил.
Ничего не получилось.
До этого как то работало.
Переустановил как то pip и началось всё.
Но потом весь питон удалил.
Поставил новую версию 3.8.10
Но проблема осталась.
Что делать — ума не приложу.
Александр Б @alex_bul Автор вопроса
У меня ещё одна версия есть 2.7.16.
Хочу вот её удалить.
И стоит ещё какой то Python Launcher.
Вместе с версией 8.3.10 установился.
Не знаю, нужен ли он.
Александр Б @alex_bul Автор вопроса
Удалил 2-ю версию. Проблема не исчезла
Александр Б @alex_bul Автор вопроса
Вроде победил.
Ответ нашел здесь:
«https://pikabu.ru/story/pobezhdaem_oshibku_ssl_pri. »
Прошу прощения. Может ссылки нельзя оставлять.
Суть в том, что нужно в командной строке всё выполнять от имени администратора.
Во вторых перед pip install requests
выполнить set HTTPS_PROXY=111.222.333.444:5555
У меня это было set HTTPS_PROXY=http://192.168.2.100:80
Затем уже pip install requests
Ругнулось на You should consider upgrading via the ‘c:\python38\python.exe -m pip install —u
pgrade pip’ command.
Сделал python -m pip install —upgrade pip
и затем уже
pip install requests
Александр Б @alex_bul Автор вопроса
Как написал выше, requests установился.
По команде pip list он выводится.
Но когда запускаю отладчик PyCharm,
на строке
import requests
он останавливается и пишет
(, ModuleNotFoundError(«No module named ‘requests'»), )
Решения вопроса 0
Ответы на вопрос 3

Loshara Tupoi @GamerDisclaimer
Scratch Программист XD
pip install urllib3==1.25.8
после этого уже устанавливай реквесты
Ответ написан более двух лет назад
Александр Б @alex_bul Автор вопроса
Установил.
Установил с горем пополам(выше написал) и requests.
Но в отладчике PyCharm,
на строке
import requests
он останавливается и пишет
(, ModuleNotFoundError(«No module named ‘requests'»), )
Александр Б @alex_bul Автор вопроса
Не получилось так:
C:\Python38>pip install urllib3==1.25.8
Requirement already satisfied: urllib3==1.25.8 in c:\python38\lib\site-packages (1.25.8)
А после pip install requests
Опять такая штуковина:
ERROR: Exception:
Traceback (most recent call last):
File «c:\python38\lib\site-packages\pip\_internal\cli\base_command.py», line 1
73, in _main
status = self.run(options, args)
File «c:\python38\lib\site-packages\pip\_internal\cli\req_command.py», line 20
3, in wrapper
return func(self, options, args)
File «c:\python38\lib\site-packages\pip\_internal\commands\install.py», line 3
15, in run
requirement_set = resolver.resolve(
File «c:\python38\lib\site-packages\pip\_internal\resolution\resolvelib\resolv
er.py», line 94, in resolve
result = self._result = resolver.resolve(
File «c:\python38\lib\site-packages\pip\_vendor\resolvelib\resolvers.py», line
472, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File «c:\python38\lib\site-packages\pip\_vendor\resolvelib\resolvers.py», line
341, in resolve
self._add_to_criteria(self.state.criteria, r, parent=None)
File «c:\python38\lib\site-packages\pip\_vendor\resolvelib\resolvers.py», line
172, in _add_to_criteria
if not criterion.candidates:
File «c:\python38\lib\site-packages\pip\_vendor\resolvelib\structs.py», line 1
51, in __bool__
return bool(self._sequence)
File «c:\python38\lib\site-packages\pip\_internal\resolution\resolvelib\found_
candidates.py», line 140, in __bool__
return any(self)
File «c:\python38\lib\site-packages\pip\_internal\resolution\resolvelib\found_
candidates.py», line 128, in
return (c for c in iterator if id(c) not in self._incompatible_ids)
File «c:\python38\lib\site-packages\pip\_internal\resolution\resolvelib\found_
candidates.py», line 29, in _iter_built
for version, func in infos:
File «c:\python38\lib\site-packages\pip\_internal\resolution\resolvelib\factor
y.py», line 272, in iter_index_candidate_infos
result = self._finder.find_best_candidate(
File «c:\python38\lib\site-packages\pip\_internal\index\package_finder.py», li
ne 851, in find_best_candidate
candidates = self.find_all_candidates(project_name)
File «c:\python38\lib\site-packages\pip\_internal\index\package_finder.py», li
ne 798, in find_all_candidates
page_candidates = list(page_candidates_it)
File «c:\python38\lib\site-packages\pip\_internal\index\sources.py», line 134,
in page_candidates
yield from self._candidates_from_page(self._link)
File «c:\python38\lib\site-packages\pip\_internal\index\package_finder.py», li
ne 758, in process_project_url
html_page = self._link_collector.fetch_page(project_url)
File «c:\python38\lib\site-packages\pip\_internal\index\collector.py», line 49
0, in fetch_page
return _get_html_page(location, session=self.session)
File «c:\python38\lib\site-packages\pip\_internal\index\collector.py», line 40
0, in _get_html_page
resp = _get_html_response(url, session=session)
File «c:\python38\lib\site-packages\pip\_internal\index\collector.py», line 11
5, in _get_html_response
resp = session.get(
File «c:\python38\lib\site-packages\pip\_vendor\requests\sessions.py», line 55
5, in get
return self.request(‘GET’, url, **kwargs)
File «c:\python38\lib\site-packages\pip\_internal\network\session.py», line 45
4, in request
return super().request(method, url, *args, **kwargs)
File «c:\python38\lib\site-packages\pip\_vendor\requests\sessions.py», line 54
2, in request
resp = self.send(prep, **send_kwargs)
File «c:\python38\lib\site-packages\pip\_vendor\requests\sessions.py», line 65
5, in send
r = adapter.send(request, **kwargs)
File «c:\python38\lib\site-packages\pip\_vendor\cachecontrol\adapter.py», line
53, in send
resp = super(CacheControlAdapter, self).send(request, **kw)
File «c:\python38\lib\site-packages\pip\_vendor\requests\adapters.py», line 43
9, in send
resp = conn.urlopen(
File «c:\python38\lib\site-packages\pip\_vendor\urllib3\connectionpool.py», li
ne 696, in urlopen
self._prepare_proxy(conn)
File «c:\python38\lib\site-packages\pip\_vendor\urllib3\connectionpool.py», li
ne 964, in _prepare_proxy
conn.connect()
File «c:\python38\lib\site-packages\pip\_vendor\urllib3\connection.py», line 3
59, in connect
conn = self._connect_tls_proxy(hostname, conn)
File «c:\python38\lib\site-packages\pip\_vendor\urllib3\connection.py», line 5
00, in _connect_tls_proxy
return ssl_wrap_socket(
File «c:\python38\lib\site-packages\pip\_vendor\urllib3\util\ssl_.py», line 45
3, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
File «c:\python38\lib\site-packages\pip\_vendor\urllib3\util\ssl_.py», line 49
5, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock)
File «c:\python38\lib\ssl.py», line 500, in wrap_socket
return self.sslsocket_class._create(
File «c:\python38\lib\ssl.py», line 997, in _create
raise ValueError(«check_hostname requires server_hostname»)
ValueError: check_hostname requires server_hostname
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
У вас случайно не установлен Fiddler ? :))
Из-за него может быть, я сталкивалась один раз с таким.
Ответ написан более двух лет назад
Александр Б @alex_bul Автор вопроса
Нет. Такой не установлен у меня
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Windows
- +2 ещё
Почему гаснет монитор?
- 1 подписчик
- 2 часа назад
- 29 просмотров
Как установить модуль requests?
Как установить модуль requests?
я не знаю что такое PIP, поэтому нажал на downlod tarball, скачал, то что было в архиве скинул в.
Как установить модуль rdtsc?
Здравствуйте! Решил найти пример использования модуля Threading. Нашёл пример. Собственно, вот.
Как установить модуль lxml?
Подскажите как установить модуль lmxl на python3.3 ?

Python(X,Y) как установить недостающий модуль
Доброго времени суток. Вопрос. У меня на производстве установили Python(X,Y) последней сборки, в.
Как правильно установить модуль JIRA
Всем доброго времени суток, хочу написать плагинчик под JIRA, пишу из под винды на PyCharm, но.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Пишешь pip install requests и все.
Регистрация: 29.05.2015
Сообщений: 661
alex925, pip не является внутренней или внешней командой
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
NewNoob, В path надо добавить путь до папки scripts располагающейся в папке куда установлен python.
Регистрация: 29.05.2015
Сообщений: 661
alex925, но я не скачивал pip,он у меня тоже не устанавливается
Добавлено через 5 минут
alex925,
C:\Users\UserName>»C:\Program Files\Python36\python.exe» pip install requests
C:\Program Files\Python36\python.exe: can’t open file ‘pip’: [Errno 2] No such f
ile or directory
Добавлено через 2 минуты
alex925, хоть питон в path заработал
Добавлено через 3 минуты
alex925, что за ерунда — почему эта тупая строка не переходит в другой диск. Причём ещё и ошибки нет кикакой. Перехожу в диск Y,а он все равно в С остается
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Сообщение от NewNoob 
но я не скачивал pip,он у меня тоже не устанавливается
Он поставляется вместе с python.
Сообщение от NewNoob 
C:\Users\UserName>»C:\Program Files\Python36\python.exe» pip install requests
C:\Program Files\Python36\python.exe: can’t open file ‘pip’: [Errno 2] No such f
ile or directory
pip это отдельная программа, ее не надо передавать как аргумент интерпретатору.
Сообщение от NewNoob 
что за ерунда — почему эта тупая строка не переходит в другой диск. Причём ещё и ошибки нет кикакой. Перехожу в диск Y,а он все равно в С остается
Это винда, там все через зад..ицу, привыкай.
Регистрация: 29.05.2015
Сообщений: 661
alex925, он установился. Чё это за бред вообще? Через полный путь,он писал,что файла не хватало какого-то. Потом вообще в директорию не заходил. Что за бред. Потом начал писать,что прав не хватает. Но в итоге я установил
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Сообщение от NewNoob 
Чё это за бред вообще?
Ты делаешь бред, получаешь бред. Все логично.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как установить модуль Прогресс Бар на Питон 3.4.4 [Windows 7 (32)]?
Всем привет! Помогите, пожалуйста, с вопросами по установке пакетов на Python. Извелся вконец. Нет.

Использование по import requests. ImportError: No module named requests
Приветствую, начну с того, что я самый новый новичек и код который написан ниже это 1й скрипт.
Не могу установить модуль requests
получаю такую ошибку >>> pip install requests File "<stdin>", line 1 pip install requests.
Добавил модуль requests в Visual Studio, но import requests подсвечен зеленым
Добавил модуль requests в Visual Studio, но import requests подсвечен зеленым. Как исправить?
Модуль requests
Смотрю видео и заинтересовался, можно ли получать такой вывод в нижнем окне, как на скриншоте, в.

Не видит модуль requests
Не видит модуль requests. Версия Python 3.7.2 При компиляции кода выдает такое Traceback (most.
