为什么urllib2.urlopen无法打开页面,例如“ http:// localhost/new-post#ryverm-29”?

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

我很好奇,为什么我会得到404错误运行此行:

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

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

urlopen方法不会用其中的“#”解析URL?

有人知道吗?

有帮助吗?

解决方案

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

因此,过程是:删除片段,例如通过 urlparse.urlparse;使用其余的来获取资源;根据服务器响应的内容类型标头适当解析它;然后采取有关资源上“当前位置”的视觉动作,基于在解析资源中定位您在第一步中保留的片段。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top