Как получить HTML-код с помощью Python-сокетов

Поэтому я пытаюсь получить исходный код Google, используя только сокеты Python, а не любые другие библиотеки, такие как urllib. Я не понимаю, почему мой запрос GET не работает, я перепробовал все возможные методы. Это код, который у меня есть, он довольно маленький, и я не хочу получать слишком много деталей. Просто ищу протокол, который используется для получения исходных кодов. Я предполагал, что это будет GET метод, но он не работает. Мне нужен ответ, который напоминает urllib.request, но использует только сокеты Python.

  • Если я передам " https://www.google.com/" socket.gethostbyname(), это терпит неудачу на getaddrinfo.
  • Также, когда я пытаюсь получить запрос от python.org, цикл while никогда не заканчивается.


import socket;

s=socket.socket();

host=socket.gethostbyname("www.google.com");

port=80;

send_buf="GET / \r\n"\
        "Host: www.google.com\r\n";

s.connect((host, port));

s.sendall(bytes(send_buf, encoding="utf-8"));

data="";

part=None;

while( True ):

    part=s.recv(2048);

    data+=str(part, "utf-8");

    if( part==b'' ):

        break;

s.close();

1 ответ

Решение

Следующее работало для меня:

import socket
s=socket.socket()
host=socket.gethostbyname('www.google.com')
port=80
s.connect((host,port))
s.sendall("GET /\r\n")
val = s.recv(10000)
# Split off the HTTP headers
val = val.split('\r\n\r\n',1)[1]
Другие вопросы по тегам