Pourquoi urllib2.urlopen ne peut pas ouvrir les pages comme « http: // localhost / new-post # commentaire-29 »?

StackOverflow https://stackoverflow.com/questions/3798422

Question

Je suis curieux, comment ça se fait que je reçois une erreur 404 en cours d'exécution de cette ligne:

urllib2.urlopen("http://localhost/new-post#comment-29")

Alors que tout fonctionne bien le surf http: // localhost / new post # 29 commentaire- dans tout navigateur ...

méthode urlopen ne pas urls parse avec "#" en elle?

Tout le monde sait?

Était-ce utile?

La solution

Dans le protocole HTTP, le fragment (à partir # partir) n'est pas envoyé au serveur à travers le réseau: il est conservé localement par le navigateur et utilisé, une fois est complètement reçu la réponse du serveur, en quelque sorte « localiser visuellement » exactement repérer dans la page à afficher comme « courant » (par exemple, si la page retournée est en HTML, ce sera fait en analysant le code HTML et la recherche du premier drapeau de <a> approprié).

Ainsi, la procédure est: éliminer le fragment par exemple via urlparse.urlparse; utiliser le reste pour aller chercher la ressource; analyser de manière appropriée basée sur l'en-tête de type de contenu de la réponse du serveur; puis prendre toutes les mesures visuelles de votre programme ne concerne la « place actuelle » sur la ressource, en fonction de la localisation au sein de la ressource analysable le fragment vous avez retenu dans la première étape.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top