2

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

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

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

urlopen 方法不解析带有“#”的url?

有人知道吗?

4

1 回答 1

7

在 HTTP 协议中,片段(从#以后)不会通过网络发送到服务器:它由浏览器本地保留,并在完全接收到服务器的响应后用于以某种方式“视觉定位”页面中的确切位置显示为“当前”(例如,如果返回的页面是 HTML,这将通过解析 HTML 并查找第一个合适的<a>标志来完成)。

因此,程序是:删除片段,例如 via urlparse.urlparse;使用其余部分来获取资源;根据服务器响应的内容类型标头适当地解析它;然后根据在解析的资源中定位您在第一步中保留的片段,对您的程序对资源上的“当前位置”执行任何视觉操作。

于 2010-09-26T15:31:04.883 回答