为什么urllib2.urlopen无法打开像“http:// localhost / new-post#comment-29”这样的网页?

时间:2010-09-26 15:21:09

标签: python urllib2 fragment-identifier urlopen

我很好奇,为什么我在运行此行时遇到404错误:

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

虽然在任何浏览器中都可以正常浏览http://localhost/new-post#comment-29 ...

urlopen方法不解析带有“#”的网址吗?

有人知道吗?

1 个答案:

答案 0 :(得分:7)

在HTTP协议中,片段(从#开始)不会通过网络发送到服务器:它在浏览器本地保留,一旦服务器的响应被完全接收,就会以某种方式“直观地”使用找到“页面中要显示为”当前“的确切位置(例如,如果返回的页面是HTML格式,则可以通过解析HTML并查找第一个合适的<a>标志来完成。) / p>

所以,程序是:删除片段,例如通过urlparse.urlparse;使用其余的来获取资源;根据服务器响应的content-type标头适当地解析它;然后根据在解析资源中定位您在第一步中保留的片段,对您的程序对资源上的“当前点”进行任何视觉操作。