我很好奇,为什么我在运行此行时遇到404错误:
urllib2.urlopen("http://localhost/new-post#comment-29")
虽然在任何浏览器中都可以正常浏览http://localhost/new-post#comment-29 ...
urlopen方法不解析带有“#”的网址吗?
有人知道吗?
答案 0 :(得分:7)
在HTTP协议中,片段(从#
开始)不会通过网络发送到服务器:它在浏览器本地保留,一旦服务器的响应被完全接收,就会以某种方式“直观地”使用找到“页面中要显示为”当前“的确切位置(例如,如果返回的页面是HTML格式,则可以通过解析HTML并查找第一个合适的<a>
标志来完成。) / p>
所以,程序是:删除片段,例如通过urlparse.urlparse
;使用其余的来获取资源;根据服务器响应的content-type标头适当地解析它;然后根据在解析资源中定位您在第一步中保留的片段,对您的程序对资源上的“当前点”进行任何视觉操作。