Неполадки при получении информации с веб-страницы по протоколу HTTP - PullRequest
2 голосов
/ 09 ноября 2019

Это мой первый вопрос на этом форуме. Итак, начнем.

В задании на Coursera python для всех я изменил URL в файле .py, как сказано, чтобы получить документ по указанной ссылке. Но после выполнения всего и запуска в cmd я получаю ошибку «socket.gaierror: [Errno 11001] getaddrinfo fail». Я также не могу заставить это работать с другими альтернативными методами, такими как консоль разработчика браузера и telnet. Telnet выдает ошибку «Не удалось открыть соединение с хостом, порт 80: Ошибка подключения».

Я заглянул в Google, но не получил четкого ответа. Было бы очень полезно, если бы кто-то решил эту проблему для меня.

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('http://data.pr4e.org/intro-short.txt', 80))
cmd = 'GET http://data.pr4e.org/intro-short.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if len(data) < 1:
        break
    print(data.decode(),end='')

mysock.close()

Я ожидаю получить метаданные и содержимое URL.

1 Ответ

0 голосов
/ 09 ноября 2019

Сокеты не понимают URL, только имена хостов. Вам нужно изменить

mysock.connect(('http://data.pr4e.org/intro-short.txt', 80))

на

mysock.connect((data.pr4e.org', 80))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...