Ich versuche, einen Code zu schreiben, der den HTML-Code von einer Website erhält, die der Benutzer eingibt. Ich muss dies schreiben, ohne urllib oder andere Bibliotheken dieser Art zu verwenden.Python HTTP GET. "Falsche Anfrage"
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()
Der Code läuft gut. Allerdings, wenn ich Eingabe eine Website wie „www.stackoverflow.com“ Ich habe eine „schlechte Anfrage“ Antwort vom Host erhalten:
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>
Was die richtige Anfrage, um den tatsächlichen HTML-Code wäre zu bekommen aus der Server. Danke
Thank you! Mein Professor verlangt jedoch, dass der Benutzer die URL eingibt, anstatt dass ich sie dort habe. Dies ist der Punkt, an dem ich Probleme habe, weil verschiedene Seiten unterschiedliche Pfade haben und ich nicht wissen würde, wie man sie verallgemeinern könnte. – JulianP
dann verwenden Sie "URL parse", um es zu Komponenten –
zu entschuldigen, meine Ignoranz, aber ich bin mir nicht sicher, wie man das macht. Ich bin nur im Intro zum Networking und mein Professor ist nicht sehr hilfreich. Alles, was ich bis jetzt gemacht habe, habe ich durch meine eigenen Recherchen bekommen, aber ich fühle mich wie in einer Straßensperre, weil ich nicht viel weiß. – JulianP