Я пытаюсь написать код, который получает html-код с веб-сайта, который вводит пользователь. Я должен написать это без использования urllib или других библиотек такого типа.Python HTTP GET. «Неверный запрос»
from socket import *
url = (input("Please enter url: "))
host=gethostbyname(url)
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((host,80))
clientSocket.send(("GET " + host + "HTTP/1.1\n\n").encode("UTF-8"))
file = clientSocket.recv(1024)
print("The html code: ", file.decode("UTF-8"))
clientSocket.close()
Код работает нормально. Однако, когда я ввода веб-сайт, таких как «www.stackoverflow.com» Я получаю «плохой запрос» ответ от хоста:
The html code: HTTP/1.1 400 Bad Request
Date: Wed, 23 Mar 2016 16:14:27 GMT
Content-Type: text/html
Content-Length: 177
Connection: close
Server: -nginx
CF-RAY: -
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare-nginx</center>
</body>
</html>
Что бы правильно запрос, чтобы получить фактический HTML-код из сервер. Спасибо
Спасибо! однако мой профессор просит, чтобы пользователь вводил url вместо меня, имея его там, в первую очередь. Здесь у меня проблемы, потому что разные сайты имеют разные пути, и я не знаю, как их обобщить. – JulianP
затем используйте 'urlparse', чтобы разобрать его на компоненты –
извините мое невежество, но я не уверен, как это сделать. Я только вступаю в сеть, и мой профессор не очень помогает. Все, что я сделал до сих пор, я получил в своих исследованиях, но чувствую, что я нахожусь в дорожном блоке, потому что не знаю многого. – JulianP