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

Sha*_*ane 2 python urllib2 urlopen fragment-identifier

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

urllib2.urlopen("http://localhost/new-post#comment-29")
Run Code Online (Sandbox Code Playgroud)

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

urlopen方法不解析带有"#"的网址?

有人知道吗?

Ale*_*lli 7

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

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