¿Por qué no puede urllib2.urlopen páginas abiertas, como “http: // localhost / nueva-post # comment-29”?

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

Pregunta

Tengo curiosidad, ¿cómo es que sale error 404 se ejecuta esta línea:

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

Mientras que todo funciona bien surf http: // localhost / nueva-post # comment-29 en cualquier navegador ...

urlopen método de análisis sintáctico no URLs con "#" en ella?

¿Alguien sabe?

¿Fue útil?

Solución

En el protocolo HTTP, el fragmento (de # en adelante) no se envía al servidor a través de la red: se retiene localmente por el navegador y utilizar, una vez que la respuesta del servidor se recibe la totalidad, de alguna manera "localizar visualmente" la exacta detectar en la página que se muestra como "actual" (por ejemplo, si la página devuelta es en HTML, esto se hará mediante el análisis del código HTML y en busca de la primera bandera <a> adecuado).

Así, el procedimiento es: eliminar el fragmento, por ejemplo, a través de urlparse.urlparse; utilizar el resto para traer el recurso; analizar apropiadamente basándose en cabecera de tipo de contenido de la respuesta del servidor; a continuación, tomar cualquier acción visual de su programa lo hace con respecto a la "posición actual" en el recurso, basado en la localización dentro del recurso analizado sintácticamente el fragmento que retiene en el primer paso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top